@farm.js/core 0.1.0-beta.3 → 0.1.0-beta.5

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 (193) hide show
  1. package/dist/agent-runtime.d.mts +2 -1
  2. package/dist/agent-runtime.d.ts +2 -1
  3. package/dist/api/route-manager.cjs +313 -10
  4. package/dist/api/route-manager.cjs.map +1 -1
  5. package/dist/api/route-manager.d.mts +3 -2
  6. package/dist/api/route-manager.d.ts +3 -2
  7. package/dist/api/route-manager.mjs +6 -5
  8. package/dist/api/runtime.cjs +313 -10
  9. package/dist/api/runtime.cjs.map +1 -1
  10. package/dist/api/runtime.d.mts +2 -1
  11. package/dist/api/runtime.d.ts +2 -1
  12. package/dist/api/runtime.mjs +4 -3
  13. package/dist/api.cjs +642 -57
  14. package/dist/api.cjs.map +1 -1
  15. package/dist/api.d.mts +3 -2
  16. package/dist/api.d.ts +3 -2
  17. package/dist/api.mjs +29 -9
  18. package/dist/{app-DOKxo-LH.d.ts → app-BjN-da13.d.ts} +38 -3
  19. package/dist/{app-BB3Iu3xh.d.mts → app-CakAr8Be.d.mts} +38 -3
  20. package/dist/app-markdown.d.mts +2 -1
  21. package/dist/app-markdown.d.ts +2 -1
  22. package/dist/cache.cjs +395 -12
  23. package/dist/cache.cjs.map +1 -1
  24. package/dist/cache.d.mts +100 -6
  25. package/dist/cache.d.ts +100 -6
  26. package/dist/cache.mjs +8 -2
  27. package/dist/{chunk-XUBZ7JI4.mjs → chunk-2CUKEMVR.mjs} +187 -16
  28. package/dist/chunk-2CUKEMVR.mjs.map +1 -0
  29. package/dist/{chunk-OHC6VCDI.mjs → chunk-2NHCNRF6.mjs} +521 -42
  30. package/dist/chunk-2NHCNRF6.mjs.map +1 -0
  31. package/dist/{chunk-6WXJ54TC.mjs → chunk-65A7QIKI.mjs} +5 -5
  32. package/dist/{chunk-6WXJ54TC.mjs.map → chunk-65A7QIKI.mjs.map} +1 -1
  33. package/dist/{chunk-5QH4IKY3.mjs → chunk-7N62DNSO.mjs} +2 -2
  34. package/dist/{chunk-XJSHJN4M.mjs → chunk-A2LUXHD2.mjs} +593 -49
  35. package/dist/chunk-A2LUXHD2.mjs.map +1 -0
  36. package/dist/chunk-ALCLXXTY.mjs +187 -0
  37. package/dist/chunk-ALCLXXTY.mjs.map +1 -0
  38. package/dist/{chunk-CSU4KJJF.mjs → chunk-C2ROET2V.mjs} +2 -2
  39. package/dist/{chunk-JNYVN7YP.mjs → chunk-EEABSBKK.mjs} +2 -2
  40. package/dist/{chunk-JNYVN7YP.mjs.map → chunk-EEABSBKK.mjs.map} +1 -1
  41. package/dist/{chunk-BIOIOWXZ.mjs → chunk-HNIQFZKB.mjs} +2 -2
  42. package/dist/{chunk-MH6FKW2I.mjs → chunk-J5YWQVI5.mjs} +4 -4
  43. package/dist/chunk-J5YWQVI5.mjs.map +1 -0
  44. package/dist/{chunk-G5I34UA6.mjs → chunk-JDEOUK5V.mjs} +4 -4
  45. package/dist/{chunk-T543TMFY.mjs → chunk-NM3CRAAL.mjs} +3 -2
  46. package/dist/chunk-NM3CRAAL.mjs.map +1 -0
  47. package/dist/{chunk-LWMGIEJA.mjs → chunk-PFE6GMNE.mjs} +47 -37
  48. package/dist/chunk-PFE6GMNE.mjs.map +1 -0
  49. package/dist/{chunk-6VS6CKAV.mjs → chunk-QM746KUO.mjs} +8 -1
  50. package/dist/chunk-QM746KUO.mjs.map +1 -0
  51. package/dist/{chunk-5FW6PQ3J.mjs → chunk-QTZZ2ISQ.mjs} +41 -16
  52. package/dist/chunk-QTZZ2ISQ.mjs.map +1 -0
  53. package/dist/{chunk-SHRJG6OG.mjs → chunk-RBRLLZL5.mjs} +18 -3
  54. package/dist/chunk-RBRLLZL5.mjs.map +1 -0
  55. package/dist/{chunk-NRRFGX45.mjs → chunk-TQAEEJB4.mjs} +3 -3
  56. package/dist/{chunk-45LKHSHJ.mjs → chunk-UB5UOSHB.mjs} +24 -12
  57. package/dist/chunk-UB5UOSHB.mjs.map +1 -0
  58. package/dist/chunk-V3XURYJO.mjs +756 -0
  59. package/dist/chunk-V3XURYJO.mjs.map +1 -0
  60. package/dist/{chunk-HZYXGV4K.mjs → chunk-VY2UYN5R.mjs} +24 -4
  61. package/dist/chunk-VY2UYN5R.mjs.map +1 -0
  62. package/dist/{chunk-C33RALN7.mjs → chunk-W2CRQFF6.mjs} +79 -15
  63. package/dist/chunk-W2CRQFF6.mjs.map +1 -0
  64. package/dist/{chunk-LG3YINQN.mjs → chunk-Z5CQMP54.mjs} +3 -3
  65. package/dist/{client-DiViK9yK.d.mts → client-BT1mFQas.d.mts} +23 -4
  66. package/dist/{client-DpEBJbts.d.ts → client-Nn0q4eO4.d.ts} +23 -4
  67. package/dist/{client-plugins-CTnsZz_A.d.ts → client-plugins-Cw4qUGsw.d.ts} +6 -0
  68. package/dist/{client-plugins-Cnr0D3kk.d.mts → client-plugins-DQQ1adXM.d.mts} +6 -0
  69. package/dist/client-plugins.d.mts +2 -1
  70. package/dist/client-plugins.d.ts +2 -1
  71. package/dist/client.cjs +665 -82
  72. package/dist/client.cjs.map +1 -1
  73. package/dist/client.d.mts +71 -5
  74. package/dist/client.d.ts +71 -5
  75. package/dist/client.mjs +10 -7
  76. package/dist/config.d.mts +2 -1
  77. package/dist/config.d.ts +2 -1
  78. package/dist/{devtools-HE4FTUDN.mjs → devtools-LVC3VB5P.mjs} +4 -4
  79. package/dist/docs.cjs +11 -1
  80. package/dist/docs.cjs.map +1 -1
  81. package/dist/docs.mjs +4 -4
  82. package/dist/index.cjs +2113 -198
  83. package/dist/index.cjs.map +1 -1
  84. package/dist/index.d.mts +16 -16
  85. package/dist/index.d.ts +16 -16
  86. package/dist/index.mjs +49 -21
  87. package/dist/index.mjs.map +1 -1
  88. package/dist/integrations.d.mts +2 -1
  89. package/dist/integrations.d.ts +2 -1
  90. package/dist/internal/build-runtime.cjs +1455 -90
  91. package/dist/internal/build-runtime.cjs.map +1 -1
  92. package/dist/internal/build-runtime.d.mts +4 -3
  93. package/dist/internal/build-runtime.d.ts +4 -3
  94. package/dist/internal/build-runtime.mjs +15 -14
  95. package/dist/internal/config-runtime.cjs +12 -1
  96. package/dist/internal/config-runtime.cjs.map +1 -1
  97. package/dist/internal/config-runtime.d.mts +3 -2
  98. package/dist/internal/config-runtime.d.ts +3 -2
  99. package/dist/internal/config-runtime.mjs +3 -3
  100. package/dist/internal/production-runtime.cjs +282 -6
  101. package/dist/internal/production-runtime.cjs.map +1 -1
  102. package/dist/internal/production-runtime.d.mts +4 -4
  103. package/dist/internal/production-runtime.d.ts +4 -4
  104. package/dist/internal/production-runtime.mjs +4 -2
  105. package/dist/{metadata-eoVmHoyv.d.ts → metadata-BAPg_Nmo.d.ts} +1 -1
  106. package/dist/{metadata-Dp8AdvsB.d.mts → metadata-_6i9oFG3.d.mts} +1 -1
  107. package/dist/middleware.d.mts +4 -3
  108. package/dist/middleware.d.ts +4 -3
  109. package/dist/navigation.cjs +40 -15
  110. package/dist/navigation.cjs.map +1 -1
  111. package/dist/navigation.mjs +2 -2
  112. package/dist/plugin.cjs +913 -53
  113. package/dist/plugin.cjs.map +1 -1
  114. package/dist/plugin.d.mts +2 -1
  115. package/dist/plugin.d.ts +2 -1
  116. package/dist/plugin.mjs +11 -10
  117. package/dist/{production-runtime-BqTnUTai.d.ts → production-runtime-BoJDc5mc.d.ts} +1 -1
  118. package/dist/{production-runtime-DtDdG9fc.d.mts → production-runtime-DPfgMV9Y.d.mts} +1 -1
  119. package/dist/routes.cjs +276 -6
  120. package/dist/routes.cjs.map +1 -1
  121. package/dist/routes.d.mts +1 -1
  122. package/dist/routes.d.ts +1 -1
  123. package/dist/routes.mjs +3 -3
  124. package/dist/{runtime-C1B7pSGT.d.mts → runtime-9nQjVM7X.d.mts} +8 -9
  125. package/dist/{runtime-CdPHt0bv.d.ts → runtime-DgeS2skB.d.ts} +8 -9
  126. package/dist/server-action-security.cjs +28 -10
  127. package/dist/server-action-security.cjs.map +1 -1
  128. package/dist/server-action-security.d.mts +2 -1
  129. package/dist/server-action-security.d.ts +2 -1
  130. package/dist/server-action-security.mjs +2 -2
  131. package/dist/server-fn-client.d.mts +1 -0
  132. package/dist/server-fn-client.d.ts +1 -0
  133. package/dist/server-fn.cjs +785 -3
  134. package/dist/server-fn.cjs.map +1 -1
  135. package/dist/server-fn.d.mts +10 -1
  136. package/dist/server-fn.d.ts +10 -1
  137. package/dist/server-fn.mjs +6 -3
  138. package/dist/server-plugins.d.mts +3 -2
  139. package/dist/server-plugins.d.ts +3 -2
  140. package/dist/server-query-client.cjs +279 -8
  141. package/dist/server-query-client.cjs.map +1 -1
  142. package/dist/server-query-client.mjs +4 -4
  143. package/dist/server-query.cjs +381 -10
  144. package/dist/server-query.cjs.map +1 -1
  145. package/dist/server-query.mjs +5 -5
  146. package/dist/server.cjs +1086 -76
  147. package/dist/server.cjs.map +1 -1
  148. package/dist/server.d.mts +8 -7
  149. package/dist/server.d.ts +8 -7
  150. package/dist/server.mjs +31 -16
  151. package/dist/server.mjs.map +1 -1
  152. package/dist/testing.cjs +341 -20
  153. package/dist/testing.cjs.map +1 -1
  154. package/dist/testing.d.mts +3 -2
  155. package/dist/testing.d.ts +3 -2
  156. package/dist/testing.mjs +7 -6
  157. package/dist/testing.mjs.map +1 -1
  158. package/dist/transport-BmbGTXA5.d.mts +49 -0
  159. package/dist/transport-BmbGTXA5.d.ts +49 -0
  160. package/dist/{utils-8USa5BiY.d.mts → utils-CHXlMDkg.d.mts} +1 -1
  161. package/dist/{utils-DKJb6K6G.d.ts → utils-Drsyz1Vj.d.ts} +1 -1
  162. package/dist/version.cjs +1 -1
  163. package/dist/version.cjs.map +1 -1
  164. package/dist/version.mjs +1 -1
  165. package/dist/vite.cjs +914 -54
  166. package/dist/vite.cjs.map +1 -1
  167. package/dist/vite.d.mts +2 -1
  168. package/dist/vite.d.ts +2 -1
  169. package/dist/vite.mjs +11 -10
  170. package/package.json +1 -1
  171. package/types/api.d.ts +44 -0
  172. package/types/client.d.ts +85 -4
  173. package/dist/chunk-45LKHSHJ.mjs.map +0 -1
  174. package/dist/chunk-5FW6PQ3J.mjs.map +0 -1
  175. package/dist/chunk-6VS6CKAV.mjs.map +0 -1
  176. package/dist/chunk-C33RALN7.mjs.map +0 -1
  177. package/dist/chunk-GZWT6VI5.mjs +0 -382
  178. package/dist/chunk-GZWT6VI5.mjs.map +0 -1
  179. package/dist/chunk-HZYXGV4K.mjs.map +0 -1
  180. package/dist/chunk-LWMGIEJA.mjs.map +0 -1
  181. package/dist/chunk-MH6FKW2I.mjs.map +0 -1
  182. package/dist/chunk-OHC6VCDI.mjs.map +0 -1
  183. package/dist/chunk-SHRJG6OG.mjs.map +0 -1
  184. package/dist/chunk-T543TMFY.mjs.map +0 -1
  185. package/dist/chunk-XJSHJN4M.mjs.map +0 -1
  186. package/dist/chunk-XUBZ7JI4.mjs.map +0 -1
  187. /package/dist/{chunk-5QH4IKY3.mjs.map → chunk-7N62DNSO.mjs.map} +0 -0
  188. /package/dist/{chunk-CSU4KJJF.mjs.map → chunk-C2ROET2V.mjs.map} +0 -0
  189. /package/dist/{chunk-BIOIOWXZ.mjs.map → chunk-HNIQFZKB.mjs.map} +0 -0
  190. /package/dist/{chunk-G5I34UA6.mjs.map → chunk-JDEOUK5V.mjs.map} +0 -0
  191. /package/dist/{chunk-NRRFGX45.mjs.map → chunk-TQAEEJB4.mjs.map} +0 -0
  192. /package/dist/{chunk-LG3YINQN.mjs.map → chunk-Z5CQMP54.mjs.map} +0 -0
  193. /package/dist/{devtools-HE4FTUDN.mjs.map → devtools-LVC3VB5P.mjs.map} +0 -0
@@ -1,11 +1,12 @@
1
1
  import { ReactElement } from 'react';
2
2
  import './types-BH1lhg5G.mjs';
3
- import { b as APIRouteParams } from './runtime-C1B7pSGT.mjs';
3
+ import { b as APIRouteParams } from './runtime-9nQjVM7X.mjs';
4
4
  import { ProgrammaticPageRoute, InferProgrammaticRouteData, ProgrammaticRouteComponentProps, ProgrammaticApiRoute } from './routes.mjs';
5
5
  import { FarmRouterQueryValue, FarmRouterPathParams } from './router.mjs';
6
6
  import { ServerFn } from './server-fn.mjs';
7
- import { g as FarmContextFactory, M as MiddlewareProps, P as PluginContextProps, p as RouteModule } from './client-plugins-Cnr0D3kk.mjs';
7
+ import { g as FarmContextFactory, M as MiddlewareProps, P as PluginContextProps, p as RouteModule } from './client-plugins-DQQ1adXM.mjs';
8
8
  import './cache.mjs';
9
+ import './transport-BmbGTXA5.mjs';
9
10
  import './route-runtime-DoOHzCAD.mjs';
10
11
  import './plugin-BJDf43dc.mjs';
11
12
  import 'http';
package/dist/testing.d.ts CHANGED
@@ -1,11 +1,12 @@
1
1
  import { ReactElement } from 'react';
2
2
  import './types-BH1lhg5G.js';
3
- import { b as APIRouteParams } from './runtime-CdPHt0bv.js';
3
+ import { b as APIRouteParams } from './runtime-DgeS2skB.js';
4
4
  import { ProgrammaticPageRoute, InferProgrammaticRouteData, ProgrammaticRouteComponentProps, ProgrammaticApiRoute } from './routes.js';
5
5
  import { FarmRouterQueryValue, FarmRouterPathParams } from './router.js';
6
6
  import { ServerFn } from './server-fn.js';
7
- import { g as FarmContextFactory, M as MiddlewareProps, P as PluginContextProps, p as RouteModule } from './client-plugins-CTnsZz_A.js';
7
+ import { g as FarmContextFactory, M as MiddlewareProps, P as PluginContextProps, p as RouteModule } from './client-plugins-Cw4qUGsw.js';
8
8
  import './cache.js';
9
+ import './transport-BmbGTXA5.js';
9
10
  import './route-runtime-DoOHzCAD.js';
10
11
  import './plugin-BJDf43dc.js';
11
12
  import 'http';
package/dist/testing.mjs CHANGED
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  runWithServerActionRequest
3
- } from "./chunk-45LKHSHJ.mjs";
4
- import "./chunk-LG3YINQN.mjs";
3
+ } from "./chunk-UB5UOSHB.mjs";
4
+ import "./chunk-Z5CQMP54.mjs";
5
5
  import "./chunk-2ED5Q2GH.mjs";
6
6
  import "./chunk-GN72QAIH.mjs";
7
7
  import "./chunk-FQYDHKKU.mjs";
8
8
  import {
9
9
  createRouteModuleFromProgrammaticPage
10
- } from "./chunk-CSU4KJJF.mjs";
10
+ } from "./chunk-C2ROET2V.mjs";
11
11
  import {
12
12
  resolveFarmRouteContext,
13
13
  withFarmRouteContext
@@ -17,15 +17,16 @@ import "./chunk-J4FNJ5IU.mjs";
17
17
  import {
18
18
  invokeAPIRouteEndpoint,
19
19
  matchAPIRoute
20
- } from "./chunk-LWMGIEJA.mjs";
20
+ } from "./chunk-PFE6GMNE.mjs";
21
21
  import "./chunk-RHIFZZUI.mjs";
22
22
  import "./chunk-LM2YNO4U.mjs";
23
23
  import "./chunk-44ZCFSKE.mjs";
24
+ import "./chunk-ALCLXXTY.mjs";
24
25
  import {
25
26
  getFarmDataCache
26
- } from "./chunk-GZWT6VI5.mjs";
27
+ } from "./chunk-V3XURYJO.mjs";
27
28
  import "./chunk-WZ5QFROO.mjs";
28
- import "./chunk-SHRJG6OG.mjs";
29
+ import "./chunk-RBRLLZL5.mjs";
29
30
  import "./chunk-7ZY5AIJO.mjs";
30
31
  import {
31
32
  buildFarmRoutePath,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/testing.ts"],"sourcesContent":["import { createElement, type ReactElement } from \"react\";\nimport { invokeAPIRouteEndpoint, matchAPIRoute, type APIRouteParams } from \"./api/route-manager\";\nimport { getFarmDataCache } from \"./cache\";\nimport { resolveFarmRouteContext, withFarmRouteContext } from \"./route-context\";\nimport {\n createRouteModuleFromProgrammaticPage,\n type InferProgrammaticRouteData,\n type ProgrammaticApiRoute,\n type ProgrammaticPageRoute,\n type ProgrammaticRouteComponentProps,\n type ProgrammaticRouteMethod,\n} from \"./routes\";\nimport {\n buildFarmRoutePath,\n matchFarmRoute,\n type FarmRouterPathParams,\n type FarmRouterQueryValue,\n} from \"./router\";\nimport { runWithServerActionRequest } from \"./server-action-security\";\nimport type { ServerFn } from \"./server-fn\";\nimport type { FarmContextFactory, MiddlewareProps, PluginContextProps, RouteModule } from \"./types\";\n\nexport type FarmTestQuery = URLSearchParams | Record<string, FarmRouterQueryValue>;\nexport type FarmTestPathParams = FarmRouterPathParams;\nexport type FarmTestFormValues = Record<string, FormDataEntryValue | readonly FormDataEntryValue[]>;\n\nexport interface FarmTestRequestOptions extends Omit<RequestInit, \"body\" | \"headers\"> {\n origin?: string;\n headers?: HeadersInit;\n query?: FarmTestQuery;\n cookies?: Record<string, string>;\n json?: unknown;\n form?: FormData | FarmTestFormValues;\n body?: BodyInit | null;\n}\n\nexport interface FarmTestHarnessOptions<TContext = unknown> {\n origin?: string;\n headers?: HeadersInit;\n cookies?: Record<string, string>;\n context?: FarmContextFactory<TContext>;\n}\n\ntype AnyProgrammaticPageRoute = ProgrammaticPageRoute<any, any, any, any>;\n\nexport type InferFarmTestRouteParams<TRoute> =\n TRoute extends ProgrammaticPageRoute<infer TParams, any, any, any> ? TParams : never;\n\nexport type InferFarmTestRouteSearch<TRoute> =\n TRoute extends ProgrammaticPageRoute<any, infer TSearch, any, any> ? TSearch : never;\n\nexport type InferFarmTestRouteData<TRoute> =\n TRoute extends ProgrammaticPageRoute<any, any, infer TDataHooks, any>\n ? InferProgrammaticRouteData<TDataHooks>\n : never;\n\nexport type FarmTestRouteProps<TRoute extends AnyProgrammaticPageRoute> =\n ProgrammaticRouteComponentProps<\n InferFarmTestRouteParams<TRoute>,\n InferFarmTestRouteSearch<TRoute>,\n InferFarmTestRouteData<TRoute>\n >;\n\ntype FarmTestRouteParamsInput<TRoute> =\n InferFarmTestRouteParams<TRoute> extends Record<string, unknown>\n ? Partial<InferFarmTestRouteParams<TRoute>>\n : FarmTestPathParams;\n\ntype FarmTestRouteSearchInput<TRoute> =\n InferFarmTestRouteSearch<TRoute> extends Record<string, unknown>\n ? Partial<InferFarmTestRouteSearch<TRoute>> | URLSearchParams\n : FarmTestQuery;\n\nexport interface FarmTestRouteOptions<\n TRoute extends AnyProgrammaticPageRoute,\n TContext = unknown,\n> extends Pick<FarmTestRequestOptions, \"origin\" | \"headers\" | \"cookies\" | \"signal\"> {\n path?: string | URL;\n params?: FarmTestRouteParamsInput<TRoute>;\n search?: FarmTestRouteSearchInput<TRoute>;\n context?: TContext;\n middleware?: MiddlewareProps;\n pluginContext?: PluginContextProps;\n}\n\nexport interface FarmTestRouteResult<TRoute extends AnyProgrammaticPageRoute> {\n route: TRoute;\n module: RouteModule;\n request: Request;\n props: FarmTestRouteProps<TRoute>;\n element: ReactElement;\n canonicalPath?: string;\n}\n\nexport interface FarmTestApiOptions extends FarmTestRequestOptions {\n path?: string | URL;\n params?: FarmTestPathParams;\n throwOnError?: boolean;\n}\n\nexport interface FarmTestEndpointOptions extends FarmTestRequestOptions {\n path?: string | URL;\n params?: APIRouteParams;\n throwOnError?: boolean;\n}\n\nexport interface FarmTestServerFnOptions extends Pick<\n FarmTestRequestOptions,\n \"origin\" | \"headers\" | \"cookies\" | \"signal\"\n> {\n path?: string | URL;\n request?: Request;\n}\n\nexport type FarmTestServerFnArguments<TInput> = [unknown] extends [TInput]\n ? [input?: TInput | FormData, options?: FarmTestServerFnOptions]\n : [input: TInput | FormData, options?: FarmTestServerFnOptions];\n\nexport interface FarmTestHarness<TContext = unknown> {\n request(path?: string | URL, options?: FarmTestRequestOptions): Request;\n route<TRoute extends AnyProgrammaticPageRoute>(\n route: TRoute,\n options?: FarmTestRouteOptions<TRoute, TContext>,\n ): Promise<FarmTestRouteResult<TRoute>>;\n api(route: ProgrammaticApiRoute, options?: FarmTestApiOptions): Promise<Response>;\n endpoint(endpoint: unknown, options?: FarmTestEndpointOptions): Promise<Response>;\n serverFn<TInput, TResult>(\n serverFn: ServerFn<TInput, TResult>,\n ...args: FarmTestServerFnArguments<TInput>\n ): Promise<TResult>;\n clearCache(): void;\n}\n\n/** Create a deterministic Web Request without depending on a test runner. */\nexport function createTestRequest(\n path: string | URL = \"/\",\n options: FarmTestRequestOptions = {},\n): Request {\n const url = resolveTestURL(path, options.origin);\n applyQuery(url.searchParams, options.query);\n\n const headers = new Headers(options.headers);\n applyCookies(headers, options.cookies);\n const { body, hasBody } = resolveRequestBody(options, headers);\n const method = (options.method ?? (hasBody ? \"POST\" : \"GET\")).toUpperCase();\n\n if ((method === \"GET\" || method === \"HEAD\") && body != null) {\n throw new TypeError(`Farm test requests cannot send a body with ${method}`);\n }\n\n const {\n origin: _origin,\n query: _query,\n cookies: _cookies,\n json: _json,\n form: _form,\n body: _body,\n headers: _headers,\n ...requestInit\n } = options;\n\n return new Request(url, {\n ...requestInit,\n method,\n headers,\n body,\n });\n}\n\n/**\n * Create test helpers that exercise Farm's real route, API, and server-function runtimes.\n * The harness has no dependency on Vitest, Jest, or a DOM environment.\n */\nexport function createFarmTestHarness<TContext = unknown>(\n options: FarmTestHarnessOptions<TContext> = {},\n): FarmTestHarness<TContext> {\n const origin = normalizeOrigin(options.origin);\n\n const request = (path: string | URL = \"/\", requestOptions: FarmTestRequestOptions = {}) =>\n createTestRequest(path, mergeRequestDefaults(options, origin, requestOptions));\n\n return {\n request,\n\n async route<TRoute extends AnyProgrammaticPageRoute>(\n route: TRoute,\n routeOptions: FarmTestRouteOptions<TRoute, TContext> = {},\n ): Promise<FarmTestRouteResult<TRoute>> {\n const requestPath =\n routeOptions.path ??\n buildFarmRoutePath(route.path, (routeOptions.params ?? {}) as FarmRouterPathParams);\n const routeRequest = request(requestPath, {\n origin: routeOptions.origin,\n headers: routeOptions.headers,\n cookies: routeOptions.cookies,\n signal: routeOptions.signal,\n query: routeOptions.search as FarmTestQuery | undefined,\n });\n const url = new URL(routeRequest.url);\n const params = resolvePageParams(route.path, url.pathname, routeOptions.params);\n const search = readSearchParams(url.searchParams);\n const routeContext = Object.prototype.hasOwnProperty.call(routeOptions, \"context\")\n ? routeOptions.context\n : await resolveFarmRouteContext(\n { context: options.context },\n {\n request: routeRequest,\n params,\n search,\n path: url.pathname,\n },\n );\n const rawProps = withFarmRouteContext(\n {\n params,\n searchParams: Promise.resolve(search),\n path: url.pathname,\n middleware: routeOptions.middleware,\n context: routeOptions.pluginContext,\n },\n routeContext,\n );\n const routeModule = createRouteModuleFromProgrammaticPage(route);\n const resolveProps = (\n routeModule as RouteModule & {\n __farmResolveRouteProps?: (props: typeof rawProps) => Promise<Record<string, unknown>>;\n }\n ).__farmResolveRouteProps;\n const resolvedProps = resolveProps\n ? await resolveProps(rawProps)\n : { ...rawProps, search, searchParams: Promise.resolve(search) };\n const canonicalPath = readCanonicalPath(resolvedProps);\n const componentProps = stripInternalRouteProps(resolvedProps) as FarmTestRouteProps<TRoute>;\n\n return {\n route,\n module: routeModule,\n request: routeRequest,\n props: componentProps,\n element: createElement(route.component, componentProps),\n canonicalPath,\n };\n },\n\n async api(route, apiOptions = {}) {\n const requestPath =\n apiOptions.path ?? buildFarmRoutePath(route.path, apiOptions.params ?? {});\n const method = apiOptions.method ?? getDefaultApiMethod(route);\n const apiRequest = request(requestPath, omitApiControlOptions({ ...apiOptions, method }));\n const match = matchAPIRoute(new Map([[route.path, route]]), new URL(apiRequest.url).pathname);\n\n if (!match) {\n return jsonErrorResponse(\"Not Found\", 404);\n }\n\n const endpoint = match.route.methods[apiRequest.method as ProgrammaticRouteMethod];\n if (!endpoint) {\n return jsonErrorResponse(\"Method Not Allowed\", 405);\n }\n\n return invokeTestEndpoint(endpoint, apiRequest, match.params, apiOptions.throwOnError);\n },\n\n async endpoint(endpoint, endpointOptions = {}) {\n const endpointRecord = endpoint as { __method?: string; __path?: string };\n const endpointPath = endpointOptions.path ?? endpointRecord.__path ?? \"/__farm/test/endpoint\";\n const endpointRequest = request(endpointPath, {\n ...omitEndpointControlOptions(endpointOptions),\n method: endpointOptions.method ?? endpointRecord.__method ?? \"GET\",\n });\n\n return invokeTestEndpoint(\n endpoint,\n endpointRequest,\n endpointOptions.params,\n endpointOptions.throwOnError,\n );\n },\n\n async serverFn<TInput, TResult>(\n serverFn: ServerFn<TInput, TResult>,\n ...args: FarmTestServerFnArguments<TInput>\n ): Promise<TResult> {\n const [input, serverFnOptions = {}] = args;\n const actionRequest =\n serverFnOptions.request ??\n request(serverFnOptions.path ?? \"/__farm/test/server-fn\", {\n origin: serverFnOptions.origin,\n headers: serverFnOptions.headers,\n cookies: serverFnOptions.cookies,\n signal: serverFnOptions.signal,\n method: \"POST\",\n });\n\n return await runWithServerActionRequest(actionRequest, () => serverFn(input as TInput));\n },\n\n clearCache() {\n getFarmDataCache().clear();\n },\n };\n}\n\nfunction resolveTestURL(path: string | URL, origin: string | undefined): URL {\n const url = path instanceof URL ? new URL(path) : new URL(path, `${normalizeOrigin(origin)}/`);\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n throw new TypeError(`Farm test requests require an HTTP(S) URL, received ${url.protocol}`);\n }\n return url;\n}\n\nfunction normalizeOrigin(origin = \"http://farm.test\"): string {\n let url: URL;\n try {\n url = new URL(origin);\n } catch {\n throw new TypeError(`Invalid Farm test origin: ${JSON.stringify(origin)}`);\n }\n\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n throw new TypeError(`Farm test origins must use HTTP(S), received ${url.protocol}`);\n }\n\n return url.origin;\n}\n\nfunction mergeRequestDefaults<TContext>(\n harnessOptions: FarmTestHarnessOptions<TContext>,\n origin: string,\n requestOptions: FarmTestRequestOptions,\n): FarmTestRequestOptions {\n const headers = new Headers(harnessOptions.headers);\n new Headers(requestOptions.headers).forEach((value, key) => headers.set(key, value));\n\n return {\n ...requestOptions,\n origin: requestOptions.origin ?? origin,\n headers,\n cookies: {\n ...harnessOptions.cookies,\n ...requestOptions.cookies,\n },\n };\n}\n\nfunction applyQuery(searchParams: URLSearchParams, query: FarmTestQuery | undefined): void {\n if (!query) return;\n\n if (query instanceof URLSearchParams) {\n for (const key of new Set(query.keys())) {\n searchParams.delete(key);\n for (const value of query.getAll(key)) searchParams.append(key, value);\n }\n return;\n }\n\n for (const [key, rawValue] of Object.entries(query)) {\n searchParams.delete(key);\n const values = Array.isArray(rawValue) ? rawValue : [rawValue];\n for (const value of values) {\n if (value == null) continue;\n if (typeof value !== \"string\" && typeof value !== \"number\" && typeof value !== \"boolean\") {\n throw new TypeError(`Invalid query value for ${JSON.stringify(key)}`);\n }\n searchParams.append(key, String(value));\n }\n }\n}\n\nfunction applyCookies(headers: Headers, cookies: Record<string, string> | undefined): void {\n if (!cookies || Object.keys(cookies).length === 0) return;\n\n const value = Object.entries(cookies)\n .map(([name, cookieValue]) => `${encodeURIComponent(name)}=${encodeURIComponent(cookieValue)}`)\n .join(\"; \");\n const current = headers.get(\"cookie\");\n headers.set(\"cookie\", current ? `${current}; ${value}` : value);\n}\n\nfunction resolveRequestBody(\n options: FarmTestRequestOptions,\n headers: Headers,\n): { body: BodyInit | null; hasBody: boolean } {\n const sources = [\n options.json !== undefined,\n options.form !== undefined,\n options.body !== undefined,\n ];\n if (sources.filter(Boolean).length > 1) {\n throw new TypeError(\"Farm test requests accept only one of json, form, or body\");\n }\n\n if (options.json !== undefined) {\n if (!headers.has(\"content-type\")) headers.set(\"content-type\", \"application/json\");\n return { body: JSON.stringify(options.json), hasBody: true };\n }\n\n if (options.form !== undefined) {\n const formData = options.form instanceof FormData ? options.form : createFormData(options.form);\n return { body: formData, hasBody: true };\n }\n\n return {\n body: options.body ?? null,\n hasBody: options.body !== undefined,\n };\n}\n\nfunction createFormData(values: FarmTestFormValues): FormData {\n const formData = new FormData();\n for (const [key, rawValue] of Object.entries(values)) {\n const entries = Array.isArray(rawValue) ? rawValue : [rawValue];\n for (const value of entries) formData.append(key, value);\n }\n return formData;\n}\n\nfunction resolvePageParams(\n pattern: string,\n pathname: string,\n explicitParams: Record<string, unknown> | undefined,\n): Record<string, string> {\n const matchedParams = matchFarmRoute(pattern, pathname);\n if (!matchedParams) {\n throw new Error(\n `Path ${JSON.stringify(pathname)} does not match route ${JSON.stringify(pattern)}`,\n );\n }\n\n if (!explicitParams) return matchedParams;\n\n return Object.fromEntries(\n Object.entries(explicitParams).map(([key, value]) => [\n key,\n Array.isArray(value) ? value.map(String).join(\"/\") : String(value),\n ]),\n );\n}\n\nfunction readSearchParams(searchParams: URLSearchParams): Record<string, string> {\n const search: Record<string, string> = {};\n searchParams.forEach((value, key) => {\n search[key] = value;\n });\n return search;\n}\n\nfunction readCanonicalPath(props: Record<string, unknown>): string | undefined {\n return typeof props.__farmCanonicalPath === \"string\" ? props.__farmCanonicalPath : undefined;\n}\n\nfunction stripInternalRouteProps(props: Record<string, unknown>): Record<string, unknown> {\n const { __farmRoutePropsResolved, __farmCanonicalPath, ...componentProps } = props;\n return componentProps;\n}\n\nfunction getDefaultApiMethod(route: ProgrammaticApiRoute): ProgrammaticRouteMethod {\n if (route.methods.GET) return \"GET\";\n return (Object.keys(route.methods)[0] as ProgrammaticRouteMethod | undefined) ?? \"GET\";\n}\n\nfunction omitApiControlOptions(options: FarmTestApiOptions): FarmTestRequestOptions {\n const { path: _path, params: _params, throwOnError: _throwOnError, ...requestOptions } = options;\n return requestOptions;\n}\n\nfunction omitEndpointControlOptions(options: FarmTestEndpointOptions): FarmTestRequestOptions {\n const { path: _path, params: _params, throwOnError: _throwOnError, ...requestOptions } = options;\n return requestOptions;\n}\n\nasync function invokeTestEndpoint(\n endpoint: unknown,\n request: Request,\n params: APIRouteParams = {},\n throwOnError = false,\n): Promise<Response> {\n try {\n return await invokeAPIRouteEndpoint(endpoint, request, params);\n } catch (error) {\n if (throwOnError) throw error;\n return jsonErrorResponse(error instanceof Error ? error.message : \"Internal Server Error\", 500);\n }\n}\n\nfunction jsonErrorResponse(error: string, status: number): Response {\n return Response.json({ error }, { status });\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/testing.ts"],"sourcesContent":["import { createElement, type ReactElement } from \"react\";\nimport { invokeAPIRouteEndpoint, matchAPIRoute, type APIRouteParams } from \"./api/route-manager\";\nimport { getFarmDataCache } from \"./cache\";\nimport { resolveFarmRouteContext, withFarmRouteContext } from \"./route-context\";\nimport {\n createRouteModuleFromProgrammaticPage,\n type InferProgrammaticRouteData,\n type ProgrammaticApiRoute,\n type ProgrammaticPageRoute,\n type ProgrammaticRouteComponentProps,\n type ProgrammaticRouteMethod,\n} from \"./routes\";\nimport {\n buildFarmRoutePath,\n matchFarmRoute,\n type FarmRouterPathParams,\n type FarmRouterQueryValue,\n} from \"./router\";\nimport { runWithServerActionRequest } from \"./server-action-security\";\nimport type { ServerFn } from \"./server-fn\";\nimport type { FarmContextFactory, MiddlewareProps, PluginContextProps, RouteModule } from \"./types\";\n\nexport type FarmTestQuery = URLSearchParams | Record<string, FarmRouterQueryValue>;\nexport type FarmTestPathParams = FarmRouterPathParams;\nexport type FarmTestFormValues = Record<string, FormDataEntryValue | readonly FormDataEntryValue[]>;\n\nexport interface FarmTestRequestOptions extends Omit<RequestInit, \"body\" | \"headers\"> {\n origin?: string;\n headers?: HeadersInit;\n query?: FarmTestQuery;\n cookies?: Record<string, string>;\n json?: unknown;\n form?: FormData | FarmTestFormValues;\n body?: BodyInit | null;\n}\n\nexport interface FarmTestHarnessOptions<TContext = unknown> {\n origin?: string;\n headers?: HeadersInit;\n cookies?: Record<string, string>;\n context?: FarmContextFactory<TContext>;\n}\n\ntype AnyProgrammaticPageRoute = ProgrammaticPageRoute<any, any, any, any>;\n\nexport type InferFarmTestRouteParams<TRoute> =\n TRoute extends ProgrammaticPageRoute<infer TParams, any, any, any> ? TParams : never;\n\nexport type InferFarmTestRouteSearch<TRoute> =\n TRoute extends ProgrammaticPageRoute<any, infer TSearch, any, any> ? TSearch : never;\n\nexport type InferFarmTestRouteData<TRoute> =\n TRoute extends ProgrammaticPageRoute<any, any, infer TDataHooks, any>\n ? InferProgrammaticRouteData<TDataHooks>\n : never;\n\nexport type FarmTestRouteProps<TRoute extends AnyProgrammaticPageRoute> =\n ProgrammaticRouteComponentProps<\n InferFarmTestRouteParams<TRoute>,\n InferFarmTestRouteSearch<TRoute>,\n InferFarmTestRouteData<TRoute>\n >;\n\ntype FarmTestRouteParamsInput<TRoute> =\n InferFarmTestRouteParams<TRoute> extends Record<string, unknown>\n ? Partial<InferFarmTestRouteParams<TRoute>>\n : FarmTestPathParams;\n\ntype FarmTestRouteSearchInput<TRoute> =\n InferFarmTestRouteSearch<TRoute> extends Record<string, unknown>\n ? Partial<InferFarmTestRouteSearch<TRoute>> | URLSearchParams\n : FarmTestQuery;\n\nexport interface FarmTestRouteOptions<\n TRoute extends AnyProgrammaticPageRoute,\n TContext = unknown,\n> extends Pick<FarmTestRequestOptions, \"origin\" | \"headers\" | \"cookies\" | \"signal\"> {\n path?: string | URL;\n params?: FarmTestRouteParamsInput<TRoute>;\n search?: FarmTestRouteSearchInput<TRoute>;\n context?: TContext;\n middleware?: MiddlewareProps;\n pluginContext?: PluginContextProps;\n}\n\nexport interface FarmTestRouteResult<TRoute extends AnyProgrammaticPageRoute> {\n route: TRoute;\n module: RouteModule;\n request: Request;\n props: FarmTestRouteProps<TRoute>;\n element: ReactElement;\n canonicalPath?: string;\n}\n\nexport interface FarmTestApiOptions extends FarmTestRequestOptions {\n path?: string | URL;\n params?: FarmTestPathParams;\n throwOnError?: boolean;\n}\n\nexport interface FarmTestEndpointOptions extends FarmTestRequestOptions {\n path?: string | URL;\n params?: APIRouteParams;\n throwOnError?: boolean;\n}\n\nexport interface FarmTestServerFnOptions extends Pick<\n FarmTestRequestOptions,\n \"origin\" | \"headers\" | \"cookies\" | \"signal\"\n> {\n path?: string | URL;\n request?: Request;\n}\n\nexport type FarmTestServerFnArguments<TInput> = [unknown] extends [TInput]\n ? [input?: TInput | FormData, options?: FarmTestServerFnOptions]\n : [input: TInput | FormData, options?: FarmTestServerFnOptions];\n\nexport interface FarmTestHarness<TContext = unknown> {\n request(path?: string | URL, options?: FarmTestRequestOptions): Request;\n route<TRoute extends AnyProgrammaticPageRoute>(\n route: TRoute,\n options?: FarmTestRouteOptions<TRoute, TContext>,\n ): Promise<FarmTestRouteResult<TRoute>>;\n api(route: ProgrammaticApiRoute, options?: FarmTestApiOptions): Promise<Response>;\n endpoint(endpoint: unknown, options?: FarmTestEndpointOptions): Promise<Response>;\n serverFn<TInput, TResult>(\n serverFn: ServerFn<TInput, TResult>,\n ...args: FarmTestServerFnArguments<TInput>\n ): Promise<TResult>;\n clearCache(): void;\n}\n\n/** Create a deterministic Web Request without depending on a test runner. */\nexport function createTestRequest(\n path: string | URL = \"/\",\n options: FarmTestRequestOptions = {},\n): Request {\n const url = resolveTestURL(path, options.origin);\n applyQuery(url.searchParams, options.query);\n\n const headers = new Headers(options.headers);\n applyCookies(headers, options.cookies);\n const { body, hasBody } = resolveRequestBody(options, headers);\n const method = (options.method ?? (hasBody ? \"POST\" : \"GET\")).toUpperCase();\n\n if ((method === \"GET\" || method === \"HEAD\") && body != null) {\n throw new TypeError(`Farm test requests cannot send a body with ${method}`);\n }\n\n const {\n origin: _origin,\n query: _query,\n cookies: _cookies,\n json: _json,\n form: _form,\n body: _body,\n headers: _headers,\n ...requestInit\n } = options;\n\n return new Request(url, {\n ...requestInit,\n method,\n headers,\n body,\n });\n}\n\n/**\n * Create test helpers that exercise Farm's real route, API, and server-function runtimes.\n * The harness has no dependency on Vitest, Jest, or a DOM environment.\n */\nexport function createFarmTestHarness<TContext = unknown>(\n options: FarmTestHarnessOptions<TContext> = {},\n): FarmTestHarness<TContext> {\n const origin = normalizeOrigin(options.origin);\n\n const request = (path: string | URL = \"/\", requestOptions: FarmTestRequestOptions = {}) =>\n createTestRequest(path, mergeRequestDefaults(options, origin, requestOptions));\n\n return {\n request,\n\n async route<TRoute extends AnyProgrammaticPageRoute>(\n route: TRoute,\n routeOptions: FarmTestRouteOptions<TRoute, TContext> = {},\n ): Promise<FarmTestRouteResult<TRoute>> {\n const requestPath =\n routeOptions.path ??\n buildFarmRoutePath(route.path, (routeOptions.params ?? {}) as FarmRouterPathParams);\n const routeRequest = request(requestPath, {\n origin: routeOptions.origin,\n headers: routeOptions.headers,\n cookies: routeOptions.cookies,\n signal: routeOptions.signal,\n query: routeOptions.search as FarmTestQuery | undefined,\n });\n const url = new URL(routeRequest.url);\n const params = resolvePageParams(route.path, url.pathname, routeOptions.params);\n const search = readSearchParams(url.searchParams);\n const routeContext = Object.prototype.hasOwnProperty.call(routeOptions, \"context\")\n ? routeOptions.context\n : await resolveFarmRouteContext(\n { context: options.context },\n {\n request: routeRequest,\n params,\n search,\n path: url.pathname,\n },\n );\n const rawProps = withFarmRouteContext(\n {\n params,\n searchParams: Promise.resolve(search),\n path: url.pathname,\n middleware: routeOptions.middleware,\n context: routeOptions.pluginContext,\n },\n routeContext,\n );\n const routeModule = createRouteModuleFromProgrammaticPage(route);\n const resolveProps = (\n routeModule as RouteModule & {\n __farmResolveRouteProps?: (props: typeof rawProps) => Promise<Record<string, unknown>>;\n }\n ).__farmResolveRouteProps;\n const resolvedProps = resolveProps\n ? await resolveProps(rawProps)\n : { ...rawProps, search, searchParams: Promise.resolve(search) };\n const canonicalPath = readCanonicalPath(resolvedProps);\n const componentProps = stripInternalRouteProps(resolvedProps) as FarmTestRouteProps<TRoute>;\n\n return {\n route,\n module: routeModule,\n request: routeRequest,\n props: componentProps,\n element: createElement(route.component, componentProps),\n canonicalPath,\n };\n },\n\n async api(route, apiOptions = {}) {\n const requestPath =\n apiOptions.path ?? buildFarmRoutePath(route.path, apiOptions.params ?? {});\n const method = apiOptions.method ?? getDefaultApiMethod(route);\n const apiRequest = request(requestPath, omitApiControlOptions({ ...apiOptions, method }));\n const match = matchAPIRoute(new Map([[route.path, route]]), new URL(apiRequest.url).pathname);\n\n if (!match) {\n return jsonErrorResponse(\"Not Found\", 404);\n }\n\n const endpoint = match.route.methods[apiRequest.method as ProgrammaticRouteMethod];\n if (!endpoint) {\n return jsonErrorResponse(\"Method Not Allowed\", 405);\n }\n\n return invokeTestEndpoint(endpoint, apiRequest, match.params, apiOptions.throwOnError);\n },\n\n async endpoint(endpoint, endpointOptions = {}) {\n const endpointRecord = endpoint as { __method?: string; __path?: string };\n const endpointPath = endpointOptions.path ?? endpointRecord.__path ?? \"/__farm/test/endpoint\";\n const endpointRequest = request(endpointPath, {\n ...omitEndpointControlOptions(endpointOptions),\n method: endpointOptions.method ?? endpointRecord.__method ?? \"GET\",\n });\n\n return invokeTestEndpoint(\n endpoint,\n endpointRequest,\n endpointOptions.params,\n endpointOptions.throwOnError,\n );\n },\n\n async serverFn<TInput, TResult>(\n serverFn: ServerFn<TInput, TResult>,\n ...args: FarmTestServerFnArguments<TInput>\n ): Promise<TResult> {\n const [input, serverFnOptions = {}] = args;\n const actionRequest =\n serverFnOptions.request ??\n request(serverFnOptions.path ?? \"/__farm/test/server-fn\", {\n origin: serverFnOptions.origin,\n headers: serverFnOptions.headers,\n cookies: serverFnOptions.cookies,\n signal: serverFnOptions.signal,\n method: \"POST\",\n });\n\n return await runWithServerActionRequest(actionRequest, () => serverFn(input as TInput));\n },\n\n clearCache() {\n getFarmDataCache().clear();\n },\n };\n}\n\nfunction resolveTestURL(path: string | URL, origin: string | undefined): URL {\n const url = path instanceof URL ? new URL(path) : new URL(path, `${normalizeOrigin(origin)}/`);\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n throw new TypeError(`Farm test requests require an HTTP(S) URL, received ${url.protocol}`);\n }\n return url;\n}\n\nfunction normalizeOrigin(origin = \"http://farm.test\"): string {\n let url: URL;\n try {\n url = new URL(origin);\n } catch {\n throw new TypeError(`Invalid Farm test origin: ${JSON.stringify(origin)}`);\n }\n\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n throw new TypeError(`Farm test origins must use HTTP(S), received ${url.protocol}`);\n }\n\n return url.origin;\n}\n\nfunction mergeRequestDefaults<TContext>(\n harnessOptions: FarmTestHarnessOptions<TContext>,\n origin: string,\n requestOptions: FarmTestRequestOptions,\n): FarmTestRequestOptions {\n const headers = new Headers(harnessOptions.headers);\n new Headers(requestOptions.headers).forEach((value, key) => headers.set(key, value));\n\n return {\n ...requestOptions,\n origin: requestOptions.origin ?? origin,\n headers,\n cookies: {\n ...harnessOptions.cookies,\n ...requestOptions.cookies,\n },\n };\n}\n\nfunction applyQuery(searchParams: URLSearchParams, query: FarmTestQuery | undefined): void {\n if (!query) return;\n\n if (query instanceof URLSearchParams) {\n for (const key of new Set(query.keys())) {\n searchParams.delete(key);\n for (const value of query.getAll(key)) searchParams.append(key, value);\n }\n return;\n }\n\n for (const [key, rawValue] of Object.entries(query)) {\n searchParams.delete(key);\n const values = Array.isArray(rawValue) ? rawValue : [rawValue];\n for (const value of values) {\n if (value == null) continue;\n if (typeof value !== \"string\" && typeof value !== \"number\" && typeof value !== \"boolean\") {\n throw new TypeError(`Invalid query value for ${JSON.stringify(key)}`);\n }\n searchParams.append(key, String(value));\n }\n }\n}\n\nfunction applyCookies(headers: Headers, cookies: Record<string, string> | undefined): void {\n if (!cookies || Object.keys(cookies).length === 0) return;\n\n const value = Object.entries(cookies)\n .map(([name, cookieValue]) => `${encodeURIComponent(name)}=${encodeURIComponent(cookieValue)}`)\n .join(\"; \");\n const current = headers.get(\"cookie\");\n headers.set(\"cookie\", current ? `${current}; ${value}` : value);\n}\n\nfunction resolveRequestBody(\n options: FarmTestRequestOptions,\n headers: Headers,\n): { body: BodyInit | null; hasBody: boolean } {\n const sources = [\n options.json !== undefined,\n options.form !== undefined,\n options.body !== undefined,\n ];\n if (sources.filter(Boolean).length > 1) {\n throw new TypeError(\"Farm test requests accept only one of json, form, or body\");\n }\n\n if (options.json !== undefined) {\n if (!headers.has(\"content-type\")) headers.set(\"content-type\", \"application/json\");\n return { body: JSON.stringify(options.json), hasBody: true };\n }\n\n if (options.form !== undefined) {\n const formData = options.form instanceof FormData ? options.form : createFormData(options.form);\n return { body: formData, hasBody: true };\n }\n\n return {\n body: options.body ?? null,\n hasBody: options.body !== undefined,\n };\n}\n\nfunction createFormData(values: FarmTestFormValues): FormData {\n const formData = new FormData();\n for (const [key, rawValue] of Object.entries(values)) {\n const entries = Array.isArray(rawValue) ? rawValue : [rawValue];\n for (const value of entries) formData.append(key, value);\n }\n return formData;\n}\n\nfunction resolvePageParams(\n pattern: string,\n pathname: string,\n explicitParams: Record<string, unknown> | undefined,\n): Record<string, string> {\n const matchedParams = matchFarmRoute(pattern, pathname);\n if (!matchedParams) {\n throw new Error(\n `Path ${JSON.stringify(pathname)} does not match route ${JSON.stringify(pattern)}`,\n );\n }\n\n if (!explicitParams) return matchedParams;\n\n return Object.fromEntries(\n Object.entries(explicitParams).map(([key, value]) => [\n key,\n Array.isArray(value) ? value.map(String).join(\"/\") : String(value),\n ]),\n );\n}\n\nfunction readSearchParams(searchParams: URLSearchParams): Record<string, string> {\n const search: Record<string, string> = {};\n searchParams.forEach((value, key) => {\n search[key] = value;\n });\n return search;\n}\n\nfunction readCanonicalPath(props: Record<string, unknown>): string | undefined {\n return typeof props.__farmCanonicalPath === \"string\" ? props.__farmCanonicalPath : undefined;\n}\n\nfunction stripInternalRouteProps(props: Record<string, unknown>): Record<string, unknown> {\n const { __farmRoutePropsResolved, __farmCanonicalPath, ...componentProps } = props;\n return componentProps;\n}\n\nfunction getDefaultApiMethod(route: ProgrammaticApiRoute): ProgrammaticRouteMethod {\n if (route.methods.GET) return \"GET\";\n return (Object.keys(route.methods)[0] as ProgrammaticRouteMethod | undefined) ?? \"GET\";\n}\n\nfunction omitApiControlOptions(options: FarmTestApiOptions): FarmTestRequestOptions {\n const { path: _path, params: _params, throwOnError: _throwOnError, ...requestOptions } = options;\n return requestOptions;\n}\n\nfunction omitEndpointControlOptions(options: FarmTestEndpointOptions): FarmTestRequestOptions {\n const { path: _path, params: _params, throwOnError: _throwOnError, ...requestOptions } = options;\n return requestOptions;\n}\n\nasync function invokeTestEndpoint(\n endpoint: unknown,\n request: Request,\n params: APIRouteParams = {},\n throwOnError = false,\n): Promise<Response> {\n try {\n return await invokeAPIRouteEndpoint(endpoint, request, params);\n } catch (error) {\n if (throwOnError) throw error;\n return jsonErrorResponse(error instanceof Error ? error.message : \"Internal Server Error\", 500);\n }\n}\n\nfunction jsonErrorResponse(error: string, status: number): Response {\n return Response.json({ error }, { status });\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,49 @@
1
+ type MultipartField = string | number | boolean | bigint | Blob | Date | null | undefined;
2
+ type MultipartValues = Record<string, MultipartField | readonly MultipartField[]>;
3
+ /**
4
+ * A real FormData value that retains the submitted value shape for generated
5
+ * API-client inference.
6
+ */
7
+ type TypedFormData<TValues> = FormData & {
8
+ readonly __farmMultipartInput: TValues;
9
+ };
10
+ type MultipartSchema<TSchema> = TSchema & {
11
+ readonly __farmMultipartSchema: true;
12
+ };
13
+ type FarmStreamResponse<TItem> = Response & {
14
+ readonly __farmStreamItem: TItem;
15
+ };
16
+ interface FarmAPIStream<TItem> extends AsyncIterable<TItem> {
17
+ readonly response: Response;
18
+ cancel(reason?: unknown): Promise<void>;
19
+ }
20
+ type SchemaLike = {
21
+ parse(data: unknown): unknown;
22
+ };
23
+ /**
24
+ * Mark a body schema as multipart. The handler still receives the schema's
25
+ * parsed object; generated clients require `toFormData(...)` for the request.
26
+ */
27
+ declare function multipart<TSchema extends SchemaLike>(schema: TSchema): MultipartSchema<TSchema>;
28
+ declare function isMultipartSchema(value: unknown): value is MultipartSchema<SchemaLike>;
29
+ /**
30
+ * Encode a typed object as multipart FormData without converting File or Blob
31
+ * values to JSON or base64.
32
+ */
33
+ declare function toFormData<TValues extends MultipartValues>(values: TValues): TypedFormData<TValues>;
34
+ /**
35
+ * Stream JSON values as newline-delimited JSON. Each source value becomes one
36
+ * independently decodable item instead of buffering the whole response.
37
+ */
38
+ declare function jsonStream<TItem>(source: AsyncIterable<TItem> | Iterable<TItem>, init?: ResponseInit): FarmStreamResponse<TItem>;
39
+ declare function isJSONStreamResponse(response: {
40
+ headers?: Pick<Headers, "get"> | null;
41
+ }): boolean;
42
+ /**
43
+ * Decode a Farm JSON stream lazily. The response body is read only as the
44
+ * consumer advances the async iterator, preserving fetch backpressure.
45
+ */
46
+ declare function readJSONStream<TItem>(response: Response): FarmAPIStream<TItem>;
47
+ declare function isFarmAPIStream(value: unknown): value is FarmAPIStream<unknown>;
48
+
49
+ export { type FarmAPIStream as F, type MultipartSchema as M, type TypedFormData as T, type MultipartField as a, type MultipartValues as b, type FarmStreamResponse as c, isJSONStreamResponse as d, isFarmAPIStream as e, isMultipartSchema as i, jsonStream as j, multipart as m, readJSONStream as r, toFormData as t };
@@ -0,0 +1,49 @@
1
+ type MultipartField = string | number | boolean | bigint | Blob | Date | null | undefined;
2
+ type MultipartValues = Record<string, MultipartField | readonly MultipartField[]>;
3
+ /**
4
+ * A real FormData value that retains the submitted value shape for generated
5
+ * API-client inference.
6
+ */
7
+ type TypedFormData<TValues> = FormData & {
8
+ readonly __farmMultipartInput: TValues;
9
+ };
10
+ type MultipartSchema<TSchema> = TSchema & {
11
+ readonly __farmMultipartSchema: true;
12
+ };
13
+ type FarmStreamResponse<TItem> = Response & {
14
+ readonly __farmStreamItem: TItem;
15
+ };
16
+ interface FarmAPIStream<TItem> extends AsyncIterable<TItem> {
17
+ readonly response: Response;
18
+ cancel(reason?: unknown): Promise<void>;
19
+ }
20
+ type SchemaLike = {
21
+ parse(data: unknown): unknown;
22
+ };
23
+ /**
24
+ * Mark a body schema as multipart. The handler still receives the schema's
25
+ * parsed object; generated clients require `toFormData(...)` for the request.
26
+ */
27
+ declare function multipart<TSchema extends SchemaLike>(schema: TSchema): MultipartSchema<TSchema>;
28
+ declare function isMultipartSchema(value: unknown): value is MultipartSchema<SchemaLike>;
29
+ /**
30
+ * Encode a typed object as multipart FormData without converting File or Blob
31
+ * values to JSON or base64.
32
+ */
33
+ declare function toFormData<TValues extends MultipartValues>(values: TValues): TypedFormData<TValues>;
34
+ /**
35
+ * Stream JSON values as newline-delimited JSON. Each source value becomes one
36
+ * independently decodable item instead of buffering the whole response.
37
+ */
38
+ declare function jsonStream<TItem>(source: AsyncIterable<TItem> | Iterable<TItem>, init?: ResponseInit): FarmStreamResponse<TItem>;
39
+ declare function isJSONStreamResponse(response: {
40
+ headers?: Pick<Headers, "get"> | null;
41
+ }): boolean;
42
+ /**
43
+ * Decode a Farm JSON stream lazily. The response body is read only as the
44
+ * consumer advances the async iterator, preserving fetch backpressure.
45
+ */
46
+ declare function readJSONStream<TItem>(response: Response): FarmAPIStream<TItem>;
47
+ declare function isFarmAPIStream(value: unknown): value is FarmAPIStream<unknown>;
48
+
49
+ export { type FarmAPIStream as F, type MultipartSchema as M, type TypedFormData as T, type MultipartField as a, type MultipartValues as b, type FarmStreamResponse as c, isJSONStreamResponse as d, isFarmAPIStream as e, isMultipartSchema as i, jsonStream as j, multipart as m, readJSONStream as r, toFormData as t };
@@ -1,4 +1,4 @@
1
- import { x as ParsedRoute, w as RouteSegment } from './client-plugins-Cnr0D3kk.mjs';
1
+ import { x as ParsedRoute, w as RouteSegment } from './client-plugins-DQQ1adXM.mjs';
2
2
 
3
3
  declare function parseRoutePath(filePath: string): ParsedRoute;
4
4
  declare function segmentsToPattern(segments: RouteSegment[]): string;
@@ -1,4 +1,4 @@
1
- import { x as ParsedRoute, w as RouteSegment } from './client-plugins-CTnsZz_A.js';
1
+ import { x as ParsedRoute, w as RouteSegment } from './client-plugins-Cw4qUGsw.js';
2
2
 
3
3
  declare function parseRoutePath(filePath: string): ParsedRoute;
4
4
  declare function segmentsToPattern(segments: RouteSegment[]): string;
package/dist/version.cjs CHANGED
@@ -25,7 +25,7 @@ __export(version_exports, {
25
25
  module.exports = __toCommonJS(version_exports);
26
26
 
27
27
  // package.json
28
- var version = "0.1.0-beta.3";
28
+ var version = "0.1.0-beta.5";
29
29
 
30
30
  // src/version.ts
31
31
  var FARM_VERSION = version;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/version.ts","../package.json"],"sourcesContent":["import { version } from \"../package.json\";\n\nexport const FARM_VERSION = version;\n","{\n \"name\": \"@farm.js/core\",\n \"version\": \"0.1.0-beta.3\",\n \"description\": \"Core Farm.js framework for modern integrated apps\",\n \"keywords\": [\n \"@farm.js/core\",\n \"framework\",\n \"react\",\n \"rsc\",\n \"server-components\",\n \"ssr\",\n \"vite\"\n ],\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/farming-labs/farm.js\",\n \"directory\": \"packages/farm\"\n },\n \"files\": [\n \"dist\",\n \"types\"\n ],\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.ts\",\n \"typesVersions\": {\n \"*\": {\n \"middleware\": [\n \"./types/middleware.d.ts\",\n \"./dist/middleware.d.ts\"\n ],\n \"version\": [\n \"./dist/version.d.ts\"\n ],\n \"router\": [\n \"./dist/router.d.ts\"\n ],\n \"routes\": [\n \"./dist/routes.d.ts\"\n ],\n \"storage\": [\n \"./dist/storage.d.ts\"\n ],\n \"integrations\": [\n \"./dist/integrations.d.ts\"\n ],\n \"cache\": [\n \"./dist/cache.d.ts\"\n ],\n \"deferred\": [\n \"./dist/deferred.d.ts\"\n ],\n \"after\": [\n \"./dist/after.d.ts\"\n ],\n \"navigation\": [\n \"./dist/navigation.d.ts\"\n ],\n \"headers\": [\n \"./dist/headers.d.ts\"\n ],\n \"docs\": [\n \"./dist/docs.d.ts\"\n ],\n \"markdown\": [\n \"./dist/markdown.d.ts\"\n ],\n \"app-markdown\": [\n \"./dist/app-markdown.d.ts\"\n ],\n \"observability\": [\n \"./dist/observability.d.ts\"\n ],\n \"workflows\": [\n \"./dist/workflows.d.ts\"\n ],\n \"cron\": [\n \"./dist/cron.d.ts\"\n ],\n \"server-fn\": [\n \"./dist/server-fn.d.ts\"\n ],\n \"server-fn/client\": [\n \"./dist/server-fn-client.d.ts\"\n ],\n \"server-action-security\": [\n \"./dist/server-action-security.d.ts\"\n ],\n \"deployment\": [\n \"./dist/deployment.d.ts\"\n ],\n \"env\": [\n \"./dist/env.d.ts\"\n ],\n \"env-types\": [\n \"./dist/env-types.d.ts\"\n ],\n \"environment\": [\n \"./dist/environment.d.ts\"\n ],\n \"environment/vite\": [\n \"./dist/environment/vite.d.ts\"\n ],\n \"testing\": [\n \"./dist/testing.d.ts\"\n ],\n \"agent-runtime\": [\n \"./dist/agent-runtime.d.ts\"\n ],\n \"image\": [\n \"./dist/image.d.ts\"\n ],\n \"image/server\": [\n \"./dist/image/server.d.ts\"\n ],\n \"image/sharp\": [\n \"./dist/image/sharp.d.ts\"\n ],\n \"i18n\": [\n \"./dist/i18n/index.d.ts\"\n ],\n \"i18n/server\": [\n \"./dist/i18n/server.d.ts\"\n ],\n \"i18n/client\": [\n \"./dist/i18n/client.d.ts\"\n ],\n \"internal/production-runtime\": [\n \"./dist/internal/production-runtime.d.ts\"\n ],\n \"internal/client-runtime\": [\n \"./dist/internal/client-runtime.d.ts\"\n ],\n \"internal/build-runtime\": [\n \"./dist/internal/build-runtime.d.ts\"\n ],\n \"internal/config-runtime\": [\n \"./dist/internal/config-runtime.d.ts\"\n ],\n \"internal/production-node-env\": [\n \"./dist/internal/production-node-env.d.ts\"\n ],\n \"config\": [\n \"./dist/config.d.ts\"\n ],\n \"api\": [\n \"./types/api.d.ts\",\n \"./dist/api.d.ts\"\n ],\n \"api/route-manager\": [\n \"./dist/api/route-manager.d.ts\"\n ],\n \"api/runtime\": [\n \"./dist/api/runtime.d.ts\"\n ],\n \"request\": [\n \"./dist/request.d.ts\"\n ],\n \"client\": [\n \"./types/client.d.ts\",\n \"./dist/client.d.ts\"\n ],\n \"server\": [\n \"./dist/server.d.ts\"\n ],\n \"vite\": [\n \"./dist/vite.d.ts\"\n ],\n \"plugin\": [\n \"./dist/plugin.d.ts\"\n ],\n \"query\": [\n \"./dist/query/index.d.ts\"\n ],\n \"*\": [\n \"./dist/*.d.ts\"\n ]\n }\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"require\": \"./dist/index.cjs\",\n \"default\": \"./dist/index.mjs\"\n },\n \"./version\": {\n \"types\": \"./dist/version.d.ts\",\n \"import\": \"./dist/version.mjs\",\n \"require\": \"./dist/version.cjs\"\n },\n \"./config\": {\n \"types\": \"./dist/config.d.ts\",\n \"import\": \"./dist/config.mjs\",\n \"require\": \"./dist/config.cjs\"\n },\n \"./server\": {\n \"types\": \"./dist/server.d.ts\",\n \"import\": \"./dist/server.mjs\",\n \"require\": \"./dist/server.cjs\"\n },\n \"./client\": {\n \"types\": \"./types/client.d.ts\",\n \"import\": \"./dist/client.mjs\",\n \"require\": \"./dist/client.cjs\"\n },\n \"./storage\": {\n \"types\": \"./dist/storage.d.ts\",\n \"import\": \"./dist/storage.mjs\",\n \"require\": \"./dist/storage.cjs\"\n },\n \"./integrations\": {\n \"types\": \"./dist/integrations.d.ts\",\n \"import\": \"./dist/integrations.mjs\",\n \"require\": \"./dist/integrations.cjs\"\n },\n \"./cache\": {\n \"types\": \"./dist/cache.d.ts\",\n \"import\": \"./dist/cache.mjs\",\n \"require\": \"./dist/cache.cjs\"\n },\n \"./deferred\": {\n \"types\": \"./dist/deferred.d.ts\",\n \"import\": \"./dist/deferred.mjs\",\n \"require\": \"./dist/deferred.cjs\"\n },\n \"./after\": {\n \"types\": \"./dist/after.d.ts\",\n \"import\": \"./dist/after.mjs\",\n \"require\": \"./dist/after.cjs\"\n },\n \"./navigation\": {\n \"types\": \"./dist/navigation.d.ts\",\n \"import\": \"./dist/navigation.mjs\",\n \"require\": \"./dist/navigation.cjs\"\n },\n \"./headers\": {\n \"types\": \"./dist/headers.d.ts\",\n \"import\": \"./dist/headers.mjs\",\n \"require\": \"./dist/headers.cjs\"\n },\n \"./docs\": {\n \"types\": \"./dist/docs.d.ts\",\n \"import\": \"./dist/docs.mjs\",\n \"require\": \"./dist/docs.cjs\"\n },\n \"./markdown\": {\n \"types\": \"./dist/markdown.d.ts\",\n \"import\": \"./dist/markdown.mjs\",\n \"require\": \"./dist/markdown.cjs\"\n },\n \"./app-markdown\": {\n \"types\": \"./dist/app-markdown.d.ts\",\n \"import\": \"./dist/app-markdown.mjs\",\n \"require\": \"./dist/app-markdown.cjs\"\n },\n \"./observability\": {\n \"types\": \"./dist/observability.d.ts\",\n \"import\": \"./dist/observability.mjs\",\n \"require\": \"./dist/observability.cjs\"\n },\n \"./workflows\": {\n \"types\": \"./dist/workflows.d.ts\",\n \"import\": \"./dist/workflows.mjs\",\n \"require\": \"./dist/workflows.cjs\"\n },\n \"./cron\": {\n \"types\": \"./dist/cron.d.ts\",\n \"import\": \"./dist/cron.mjs\",\n \"require\": \"./dist/cron.cjs\"\n },\n \"./server-fn\": {\n \"types\": \"./dist/server-fn.d.ts\",\n \"import\": \"./dist/server-fn.mjs\",\n \"require\": \"./dist/server-fn.cjs\"\n },\n \"./server-fn/client\": {\n \"types\": \"./dist/server-fn-client.d.ts\",\n \"import\": \"./dist/server-fn-client.mjs\",\n \"require\": \"./dist/server-fn-client.cjs\"\n },\n \"./server-query\": {\n \"types\": \"./dist/server-query.d.ts\",\n \"import\": \"./dist/server-query.mjs\",\n \"require\": \"./dist/server-query.cjs\"\n },\n \"./server-query/client\": {\n \"types\": \"./dist/server-query-client.d.ts\",\n \"import\": \"./dist/server-query-client.mjs\",\n \"require\": \"./dist/server-query-client.cjs\"\n },\n \"./server-action-security\": {\n \"types\": \"./dist/server-action-security.d.ts\",\n \"import\": \"./dist/server-action-security.mjs\",\n \"require\": \"./dist/server-action-security.cjs\"\n },\n \"./deployment\": {\n \"types\": \"./dist/deployment.d.ts\",\n \"import\": \"./dist/deployment.mjs\",\n \"require\": \"./dist/deployment.cjs\"\n },\n \"./env\": {\n \"types\": \"./dist/env.d.ts\",\n \"import\": \"./dist/env.mjs\",\n \"require\": \"./dist/env.cjs\"\n },\n \"./env-types\": {\n \"types\": \"./dist/env-types.d.ts\",\n \"import\": \"./dist/env-types.mjs\",\n \"require\": \"./dist/env-types.cjs\"\n },\n \"./environment\": {\n \"types\": \"./dist/environment.d.ts\",\n \"import\": \"./dist/environment.mjs\",\n \"require\": \"./dist/environment.cjs\"\n },\n \"./environment/vite\": {\n \"types\": \"./dist/environment/vite.d.ts\",\n \"import\": \"./dist/environment/vite.mjs\",\n \"require\": \"./dist/environment/vite.cjs\"\n },\n \"./vite\": {\n \"types\": \"./dist/vite.d.ts\",\n \"import\": \"./dist/vite.mjs\",\n \"require\": \"./dist/vite.cjs\"\n },\n \"./plugin\": {\n \"types\": \"./dist/plugin.d.ts\",\n \"import\": \"./dist/plugin.mjs\",\n \"require\": \"./dist/plugin.cjs\"\n },\n \"./plugin/server\": {\n \"types\": \"./dist/server-plugins.d.ts\",\n \"import\": \"./dist/server-plugins.mjs\",\n \"require\": \"./dist/server-plugins.cjs\"\n },\n \"./plugin/client\": {\n \"types\": \"./dist/client-plugins.d.ts\",\n \"import\": \"./dist/client-plugins.mjs\",\n \"require\": \"./dist/client-plugins.cjs\"\n },\n \"./query\": {\n \"types\": \"./dist/query/index.d.ts\",\n \"import\": \"./dist/query/index.mjs\",\n \"require\": \"./dist/query/index.cjs\"\n },\n \"./query/parsers\": {\n \"types\": \"./dist/query/parsers.d.ts\",\n \"import\": \"./dist/query/parsers.mjs\",\n \"require\": \"./dist/query/parsers.cjs\"\n },\n \"./query/client\": {\n \"types\": \"./dist/query/client.d.ts\",\n \"import\": \"./dist/query/client.mjs\",\n \"require\": \"./dist/query/client.cjs\"\n },\n \"./query/server\": {\n \"types\": \"./dist/query/server.d.ts\",\n \"import\": \"./dist/query/server.mjs\",\n \"require\": \"./dist/query/server.cjs\"\n },\n \"./middleware\": {\n \"types\": \"./dist/middleware.d.ts\",\n \"import\": \"./dist/middleware.mjs\",\n \"require\": \"./dist/middleware.cjs\"\n },\n \"./api\": {\n \"types\": \"./dist/api.d.ts\",\n \"import\": \"./dist/api.mjs\",\n \"require\": \"./dist/api.cjs\"\n },\n \"./api/route-manager\": {\n \"types\": \"./dist/api/route-manager.d.ts\",\n \"import\": \"./dist/api/route-manager.mjs\",\n \"require\": \"./dist/api/route-manager.cjs\"\n },\n \"./api/runtime\": {\n \"types\": \"./dist/api/runtime.d.ts\",\n \"import\": \"./dist/api/runtime.mjs\",\n \"require\": \"./dist/api/runtime.cjs\"\n },\n \"./request\": {\n \"types\": \"./dist/request.d.ts\",\n \"import\": \"./dist/request.mjs\",\n \"require\": \"./dist/request.cjs\"\n },\n \"./router\": {\n \"types\": \"./dist/router.d.ts\",\n \"import\": \"./dist/router.mjs\",\n \"require\": \"./dist/router.cjs\"\n },\n \"./routes\": {\n \"types\": \"./dist/routes.d.ts\",\n \"import\": \"./dist/routes.mjs\",\n \"require\": \"./dist/routes.cjs\"\n },\n \"./testing\": {\n \"types\": \"./dist/testing.d.ts\",\n \"import\": \"./dist/testing.mjs\",\n \"require\": \"./dist/testing.cjs\"\n },\n \"./agent-runtime\": {\n \"types\": \"./dist/agent-runtime.d.ts\",\n \"import\": \"./dist/agent-runtime.mjs\",\n \"require\": \"./dist/agent-runtime.cjs\"\n },\n \"./image\": {\n \"types\": \"./dist/image.d.ts\",\n \"import\": \"./dist/image.mjs\",\n \"require\": \"./dist/image.cjs\"\n },\n \"./image/server\": {\n \"types\": \"./dist/image/server.d.ts\",\n \"import\": \"./dist/image/server.mjs\",\n \"require\": \"./dist/image/server.cjs\"\n },\n \"./image/sharp\": {\n \"types\": \"./dist/image/sharp.d.ts\",\n \"import\": \"./dist/image/sharp.mjs\",\n \"require\": \"./dist/image/sharp.cjs\"\n },\n \"./i18n\": {\n \"types\": \"./dist/i18n/index.d.ts\",\n \"import\": \"./dist/i18n/index.mjs\",\n \"require\": \"./dist/i18n/index.cjs\"\n },\n \"./i18n/server\": {\n \"types\": \"./dist/i18n/server.d.ts\",\n \"import\": \"./dist/i18n/server.mjs\",\n \"require\": \"./dist/i18n/server.cjs\"\n },\n \"./i18n/client\": {\n \"types\": \"./dist/i18n/client.d.ts\",\n \"import\": \"./dist/i18n/client.mjs\",\n \"require\": \"./dist/i18n/client.cjs\"\n },\n \"./internal/production-runtime\": {\n \"types\": \"./dist/internal/production-runtime.d.ts\",\n \"import\": \"./dist/internal/production-runtime.mjs\",\n \"require\": \"./dist/internal/production-runtime.cjs\"\n },\n \"./internal/client-runtime\": {\n \"types\": \"./dist/internal/client-runtime.d.ts\",\n \"import\": \"./dist/internal/client-runtime.mjs\",\n \"require\": \"./dist/internal/client-runtime.cjs\"\n },\n \"./internal/build-runtime\": {\n \"types\": \"./dist/internal/build-runtime.d.ts\",\n \"import\": \"./dist/internal/build-runtime.mjs\",\n \"require\": \"./dist/internal/build-runtime.cjs\"\n },\n \"./internal/config-runtime\": {\n \"types\": \"./dist/internal/config-runtime.d.ts\",\n \"import\": \"./dist/internal/config-runtime.mjs\",\n \"require\": \"./dist/internal/config-runtime.cjs\"\n },\n \"./internal/production-node-env\": {\n \"types\": \"./dist/internal/production-node-env.d.ts\",\n \"import\": \"./dist/internal/production-node-env.mjs\",\n \"require\": \"./dist/internal/production-node-env.cjs\"\n }\n },\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"build:runtime\": \"tsup --config tsup.runtime.config.ts\",\n \"dev\": \"tsup --watch\",\n \"test\": \"vitest run\",\n \"test:coverage\": \"vitest --coverage\",\n \"lint\": \"biome lint .\",\n \"lint:fix\": \"biome lint --write .\",\n \"format\": \"biome format --write .\",\n \"type-check\": \"tsc --noEmit\",\n \"clean\": \"rm -rf dist\"\n },\n \"dependencies\": {\n \"@farming-labs/docs\": \"^0.2.44\",\n \"@farming-labs/orm\": \"0.0.62\",\n \"@farming-labs/orm-runtime\": \"0.0.62\",\n \"@formatjs/icu-messageformat-parser\": \"3.5.15\",\n \"@mdx-js/mdx\": \"^3.1.1\",\n \"@scalar/api-reference\": \"^1.38.1\",\n \"@scalar/openapi-parser\": \"^0.22.3\",\n \"@tailwindcss/vite\": \"4.1.18\",\n \"@vitejs/plugin-react\": \"^4.2.1\",\n \"better-call\": \"^1.0.19\",\n \"db0\": \"^0.3.4\",\n \"esbuild\": \"^0.28.0\",\n \"fast-glob\": \"^3.3.2\",\n \"h3\": \"2.0.1-rc.5\",\n \"image-size\": \"^2.0.2\",\n \"intl-messageformat\": \"11.2.12\",\n \"marked\": \"^12.0.2\",\n \"nitro\": \"3.0.1-alpha.0\",\n \"pg\": \"^8.20.0\",\n \"picocolors\": \"^1.0.0\",\n \"remark-gfm\": \"^4.0.1\",\n \"sirv\": \"^2.0.4\",\n \"sugar-high\": \"^0.9.5\",\n \"supports-color\": \"^10.2.2\",\n \"tailwindcss\": \"4.1.18\",\n \"unstorage\": \"^2.0.0-alpha.3\",\n \"vite\": \"^5.0.10\",\n \"zod\": \"^4.1.12\"\n },\n \"devDependencies\": {\n \"@clerk/react\": \"^6.1.0\",\n \"@types/react\": \"^18.2.45\",\n \"@types/react-dom\": \"^18.2.18\",\n \"@vitest/coverage-v8\": \"^1.1.0\",\n \"jsdom\": \"^25.0.0\",\n \"react\": \"19.2.8\",\n \"react-dom\": \"19.2.8\",\n \"tsup\": \"^8.3.5\",\n \"typescript\": \"^5.3.3\",\n \"vitest\": \"^1.1.0\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.2.0 || ^19.0.0\",\n \"react-dom\": \"^18.2.0 || ^19.0.0\"\n },\n \"optionalDependencies\": {\n \"rolldown\": \"1.2.0\",\n \"sharp\": \"^0.34.5\",\n \"vite-rolldown\": \"npm:vite@8.1.5\"\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEE,cAAW;;;ADAN,IAAM,eAAe;","names":[]}
1
+ {"version":3,"sources":["../src/version.ts","../package.json"],"sourcesContent":["import { version } from \"../package.json\";\n\nexport const FARM_VERSION = version;\n","{\n \"name\": \"@farm.js/core\",\n \"version\": \"0.1.0-beta.5\",\n \"description\": \"Core Farm.js framework for modern integrated apps\",\n \"keywords\": [\n \"@farm.js/core\",\n \"framework\",\n \"react\",\n \"rsc\",\n \"server-components\",\n \"ssr\",\n \"vite\"\n ],\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/farming-labs/farm.js\",\n \"directory\": \"packages/farm\"\n },\n \"files\": [\n \"dist\",\n \"types\"\n ],\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.ts\",\n \"typesVersions\": {\n \"*\": {\n \"middleware\": [\n \"./types/middleware.d.ts\",\n \"./dist/middleware.d.ts\"\n ],\n \"version\": [\n \"./dist/version.d.ts\"\n ],\n \"router\": [\n \"./dist/router.d.ts\"\n ],\n \"routes\": [\n \"./dist/routes.d.ts\"\n ],\n \"storage\": [\n \"./dist/storage.d.ts\"\n ],\n \"integrations\": [\n \"./dist/integrations.d.ts\"\n ],\n \"cache\": [\n \"./dist/cache.d.ts\"\n ],\n \"deferred\": [\n \"./dist/deferred.d.ts\"\n ],\n \"after\": [\n \"./dist/after.d.ts\"\n ],\n \"navigation\": [\n \"./dist/navigation.d.ts\"\n ],\n \"headers\": [\n \"./dist/headers.d.ts\"\n ],\n \"docs\": [\n \"./dist/docs.d.ts\"\n ],\n \"markdown\": [\n \"./dist/markdown.d.ts\"\n ],\n \"app-markdown\": [\n \"./dist/app-markdown.d.ts\"\n ],\n \"observability\": [\n \"./dist/observability.d.ts\"\n ],\n \"workflows\": [\n \"./dist/workflows.d.ts\"\n ],\n \"cron\": [\n \"./dist/cron.d.ts\"\n ],\n \"server-fn\": [\n \"./dist/server-fn.d.ts\"\n ],\n \"server-fn/client\": [\n \"./dist/server-fn-client.d.ts\"\n ],\n \"server-action-security\": [\n \"./dist/server-action-security.d.ts\"\n ],\n \"deployment\": [\n \"./dist/deployment.d.ts\"\n ],\n \"env\": [\n \"./dist/env.d.ts\"\n ],\n \"env-types\": [\n \"./dist/env-types.d.ts\"\n ],\n \"environment\": [\n \"./dist/environment.d.ts\"\n ],\n \"environment/vite\": [\n \"./dist/environment/vite.d.ts\"\n ],\n \"testing\": [\n \"./dist/testing.d.ts\"\n ],\n \"agent-runtime\": [\n \"./dist/agent-runtime.d.ts\"\n ],\n \"image\": [\n \"./dist/image.d.ts\"\n ],\n \"image/server\": [\n \"./dist/image/server.d.ts\"\n ],\n \"image/sharp\": [\n \"./dist/image/sharp.d.ts\"\n ],\n \"i18n\": [\n \"./dist/i18n/index.d.ts\"\n ],\n \"i18n/server\": [\n \"./dist/i18n/server.d.ts\"\n ],\n \"i18n/client\": [\n \"./dist/i18n/client.d.ts\"\n ],\n \"internal/production-runtime\": [\n \"./dist/internal/production-runtime.d.ts\"\n ],\n \"internal/client-runtime\": [\n \"./dist/internal/client-runtime.d.ts\"\n ],\n \"internal/build-runtime\": [\n \"./dist/internal/build-runtime.d.ts\"\n ],\n \"internal/config-runtime\": [\n \"./dist/internal/config-runtime.d.ts\"\n ],\n \"internal/production-node-env\": [\n \"./dist/internal/production-node-env.d.ts\"\n ],\n \"config\": [\n \"./dist/config.d.ts\"\n ],\n \"api\": [\n \"./types/api.d.ts\",\n \"./dist/api.d.ts\"\n ],\n \"api/route-manager\": [\n \"./dist/api/route-manager.d.ts\"\n ],\n \"api/runtime\": [\n \"./dist/api/runtime.d.ts\"\n ],\n \"request\": [\n \"./dist/request.d.ts\"\n ],\n \"client\": [\n \"./types/client.d.ts\",\n \"./dist/client.d.ts\"\n ],\n \"server\": [\n \"./dist/server.d.ts\"\n ],\n \"vite\": [\n \"./dist/vite.d.ts\"\n ],\n \"plugin\": [\n \"./dist/plugin.d.ts\"\n ],\n \"query\": [\n \"./dist/query/index.d.ts\"\n ],\n \"*\": [\n \"./dist/*.d.ts\"\n ]\n }\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"require\": \"./dist/index.cjs\",\n \"default\": \"./dist/index.mjs\"\n },\n \"./version\": {\n \"types\": \"./dist/version.d.ts\",\n \"import\": \"./dist/version.mjs\",\n \"require\": \"./dist/version.cjs\"\n },\n \"./config\": {\n \"types\": \"./dist/config.d.ts\",\n \"import\": \"./dist/config.mjs\",\n \"require\": \"./dist/config.cjs\"\n },\n \"./server\": {\n \"types\": \"./dist/server.d.ts\",\n \"import\": \"./dist/server.mjs\",\n \"require\": \"./dist/server.cjs\"\n },\n \"./client\": {\n \"types\": \"./types/client.d.ts\",\n \"import\": \"./dist/client.mjs\",\n \"require\": \"./dist/client.cjs\"\n },\n \"./storage\": {\n \"types\": \"./dist/storage.d.ts\",\n \"import\": \"./dist/storage.mjs\",\n \"require\": \"./dist/storage.cjs\"\n },\n \"./integrations\": {\n \"types\": \"./dist/integrations.d.ts\",\n \"import\": \"./dist/integrations.mjs\",\n \"require\": \"./dist/integrations.cjs\"\n },\n \"./cache\": {\n \"types\": \"./dist/cache.d.ts\",\n \"import\": \"./dist/cache.mjs\",\n \"require\": \"./dist/cache.cjs\"\n },\n \"./deferred\": {\n \"types\": \"./dist/deferred.d.ts\",\n \"import\": \"./dist/deferred.mjs\",\n \"require\": \"./dist/deferred.cjs\"\n },\n \"./after\": {\n \"types\": \"./dist/after.d.ts\",\n \"import\": \"./dist/after.mjs\",\n \"require\": \"./dist/after.cjs\"\n },\n \"./navigation\": {\n \"types\": \"./dist/navigation.d.ts\",\n \"import\": \"./dist/navigation.mjs\",\n \"require\": \"./dist/navigation.cjs\"\n },\n \"./headers\": {\n \"types\": \"./dist/headers.d.ts\",\n \"import\": \"./dist/headers.mjs\",\n \"require\": \"./dist/headers.cjs\"\n },\n \"./docs\": {\n \"types\": \"./dist/docs.d.ts\",\n \"import\": \"./dist/docs.mjs\",\n \"require\": \"./dist/docs.cjs\"\n },\n \"./markdown\": {\n \"types\": \"./dist/markdown.d.ts\",\n \"import\": \"./dist/markdown.mjs\",\n \"require\": \"./dist/markdown.cjs\"\n },\n \"./app-markdown\": {\n \"types\": \"./dist/app-markdown.d.ts\",\n \"import\": \"./dist/app-markdown.mjs\",\n \"require\": \"./dist/app-markdown.cjs\"\n },\n \"./observability\": {\n \"types\": \"./dist/observability.d.ts\",\n \"import\": \"./dist/observability.mjs\",\n \"require\": \"./dist/observability.cjs\"\n },\n \"./workflows\": {\n \"types\": \"./dist/workflows.d.ts\",\n \"import\": \"./dist/workflows.mjs\",\n \"require\": \"./dist/workflows.cjs\"\n },\n \"./cron\": {\n \"types\": \"./dist/cron.d.ts\",\n \"import\": \"./dist/cron.mjs\",\n \"require\": \"./dist/cron.cjs\"\n },\n \"./server-fn\": {\n \"types\": \"./dist/server-fn.d.ts\",\n \"import\": \"./dist/server-fn.mjs\",\n \"require\": \"./dist/server-fn.cjs\"\n },\n \"./server-fn/client\": {\n \"types\": \"./dist/server-fn-client.d.ts\",\n \"import\": \"./dist/server-fn-client.mjs\",\n \"require\": \"./dist/server-fn-client.cjs\"\n },\n \"./server-query\": {\n \"types\": \"./dist/server-query.d.ts\",\n \"import\": \"./dist/server-query.mjs\",\n \"require\": \"./dist/server-query.cjs\"\n },\n \"./server-query/client\": {\n \"types\": \"./dist/server-query-client.d.ts\",\n \"import\": \"./dist/server-query-client.mjs\",\n \"require\": \"./dist/server-query-client.cjs\"\n },\n \"./server-action-security\": {\n \"types\": \"./dist/server-action-security.d.ts\",\n \"import\": \"./dist/server-action-security.mjs\",\n \"require\": \"./dist/server-action-security.cjs\"\n },\n \"./deployment\": {\n \"types\": \"./dist/deployment.d.ts\",\n \"import\": \"./dist/deployment.mjs\",\n \"require\": \"./dist/deployment.cjs\"\n },\n \"./env\": {\n \"types\": \"./dist/env.d.ts\",\n \"import\": \"./dist/env.mjs\",\n \"require\": \"./dist/env.cjs\"\n },\n \"./env-types\": {\n \"types\": \"./dist/env-types.d.ts\",\n \"import\": \"./dist/env-types.mjs\",\n \"require\": \"./dist/env-types.cjs\"\n },\n \"./environment\": {\n \"types\": \"./dist/environment.d.ts\",\n \"import\": \"./dist/environment.mjs\",\n \"require\": \"./dist/environment.cjs\"\n },\n \"./environment/vite\": {\n \"types\": \"./dist/environment/vite.d.ts\",\n \"import\": \"./dist/environment/vite.mjs\",\n \"require\": \"./dist/environment/vite.cjs\"\n },\n \"./vite\": {\n \"types\": \"./dist/vite.d.ts\",\n \"import\": \"./dist/vite.mjs\",\n \"require\": \"./dist/vite.cjs\"\n },\n \"./plugin\": {\n \"types\": \"./dist/plugin.d.ts\",\n \"import\": \"./dist/plugin.mjs\",\n \"require\": \"./dist/plugin.cjs\"\n },\n \"./plugin/server\": {\n \"types\": \"./dist/server-plugins.d.ts\",\n \"import\": \"./dist/server-plugins.mjs\",\n \"require\": \"./dist/server-plugins.cjs\"\n },\n \"./plugin/client\": {\n \"types\": \"./dist/client-plugins.d.ts\",\n \"import\": \"./dist/client-plugins.mjs\",\n \"require\": \"./dist/client-plugins.cjs\"\n },\n \"./query\": {\n \"types\": \"./dist/query/index.d.ts\",\n \"import\": \"./dist/query/index.mjs\",\n \"require\": \"./dist/query/index.cjs\"\n },\n \"./query/parsers\": {\n \"types\": \"./dist/query/parsers.d.ts\",\n \"import\": \"./dist/query/parsers.mjs\",\n \"require\": \"./dist/query/parsers.cjs\"\n },\n \"./query/client\": {\n \"types\": \"./dist/query/client.d.ts\",\n \"import\": \"./dist/query/client.mjs\",\n \"require\": \"./dist/query/client.cjs\"\n },\n \"./query/server\": {\n \"types\": \"./dist/query/server.d.ts\",\n \"import\": \"./dist/query/server.mjs\",\n \"require\": \"./dist/query/server.cjs\"\n },\n \"./middleware\": {\n \"types\": \"./dist/middleware.d.ts\",\n \"import\": \"./dist/middleware.mjs\",\n \"require\": \"./dist/middleware.cjs\"\n },\n \"./api\": {\n \"types\": \"./dist/api.d.ts\",\n \"import\": \"./dist/api.mjs\",\n \"require\": \"./dist/api.cjs\"\n },\n \"./api/route-manager\": {\n \"types\": \"./dist/api/route-manager.d.ts\",\n \"import\": \"./dist/api/route-manager.mjs\",\n \"require\": \"./dist/api/route-manager.cjs\"\n },\n \"./api/runtime\": {\n \"types\": \"./dist/api/runtime.d.ts\",\n \"import\": \"./dist/api/runtime.mjs\",\n \"require\": \"./dist/api/runtime.cjs\"\n },\n \"./request\": {\n \"types\": \"./dist/request.d.ts\",\n \"import\": \"./dist/request.mjs\",\n \"require\": \"./dist/request.cjs\"\n },\n \"./router\": {\n \"types\": \"./dist/router.d.ts\",\n \"import\": \"./dist/router.mjs\",\n \"require\": \"./dist/router.cjs\"\n },\n \"./routes\": {\n \"types\": \"./dist/routes.d.ts\",\n \"import\": \"./dist/routes.mjs\",\n \"require\": \"./dist/routes.cjs\"\n },\n \"./testing\": {\n \"types\": \"./dist/testing.d.ts\",\n \"import\": \"./dist/testing.mjs\",\n \"require\": \"./dist/testing.cjs\"\n },\n \"./agent-runtime\": {\n \"types\": \"./dist/agent-runtime.d.ts\",\n \"import\": \"./dist/agent-runtime.mjs\",\n \"require\": \"./dist/agent-runtime.cjs\"\n },\n \"./image\": {\n \"types\": \"./dist/image.d.ts\",\n \"import\": \"./dist/image.mjs\",\n \"require\": \"./dist/image.cjs\"\n },\n \"./image/server\": {\n \"types\": \"./dist/image/server.d.ts\",\n \"import\": \"./dist/image/server.mjs\",\n \"require\": \"./dist/image/server.cjs\"\n },\n \"./image/sharp\": {\n \"types\": \"./dist/image/sharp.d.ts\",\n \"import\": \"./dist/image/sharp.mjs\",\n \"require\": \"./dist/image/sharp.cjs\"\n },\n \"./i18n\": {\n \"types\": \"./dist/i18n/index.d.ts\",\n \"import\": \"./dist/i18n/index.mjs\",\n \"require\": \"./dist/i18n/index.cjs\"\n },\n \"./i18n/server\": {\n \"types\": \"./dist/i18n/server.d.ts\",\n \"import\": \"./dist/i18n/server.mjs\",\n \"require\": \"./dist/i18n/server.cjs\"\n },\n \"./i18n/client\": {\n \"types\": \"./dist/i18n/client.d.ts\",\n \"import\": \"./dist/i18n/client.mjs\",\n \"require\": \"./dist/i18n/client.cjs\"\n },\n \"./internal/production-runtime\": {\n \"types\": \"./dist/internal/production-runtime.d.ts\",\n \"import\": \"./dist/internal/production-runtime.mjs\",\n \"require\": \"./dist/internal/production-runtime.cjs\"\n },\n \"./internal/client-runtime\": {\n \"types\": \"./dist/internal/client-runtime.d.ts\",\n \"import\": \"./dist/internal/client-runtime.mjs\",\n \"require\": \"./dist/internal/client-runtime.cjs\"\n },\n \"./internal/build-runtime\": {\n \"types\": \"./dist/internal/build-runtime.d.ts\",\n \"import\": \"./dist/internal/build-runtime.mjs\",\n \"require\": \"./dist/internal/build-runtime.cjs\"\n },\n \"./internal/config-runtime\": {\n \"types\": \"./dist/internal/config-runtime.d.ts\",\n \"import\": \"./dist/internal/config-runtime.mjs\",\n \"require\": \"./dist/internal/config-runtime.cjs\"\n },\n \"./internal/production-node-env\": {\n \"types\": \"./dist/internal/production-node-env.d.ts\",\n \"import\": \"./dist/internal/production-node-env.mjs\",\n \"require\": \"./dist/internal/production-node-env.cjs\"\n }\n },\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"build:runtime\": \"tsup --config tsup.runtime.config.ts\",\n \"dev\": \"tsup --watch\",\n \"test\": \"vitest run\",\n \"test:coverage\": \"vitest --coverage\",\n \"lint\": \"biome lint .\",\n \"lint:fix\": \"biome lint --write .\",\n \"format\": \"biome format --write .\",\n \"type-check\": \"tsc --noEmit\",\n \"clean\": \"rm -rf dist\"\n },\n \"dependencies\": {\n \"@farming-labs/docs\": \"^0.2.44\",\n \"@farming-labs/orm\": \"0.0.62\",\n \"@farming-labs/orm-runtime\": \"0.0.62\",\n \"@formatjs/icu-messageformat-parser\": \"3.5.15\",\n \"@mdx-js/mdx\": \"^3.1.1\",\n \"@scalar/api-reference\": \"^1.38.1\",\n \"@scalar/openapi-parser\": \"^0.22.3\",\n \"@tailwindcss/vite\": \"4.1.18\",\n \"@vitejs/plugin-react\": \"^4.2.1\",\n \"better-call\": \"^1.0.19\",\n \"db0\": \"^0.3.4\",\n \"esbuild\": \"^0.28.0\",\n \"fast-glob\": \"^3.3.2\",\n \"h3\": \"2.0.1-rc.5\",\n \"image-size\": \"^2.0.2\",\n \"intl-messageformat\": \"11.2.12\",\n \"marked\": \"^12.0.2\",\n \"nitro\": \"3.0.1-alpha.0\",\n \"pg\": \"^8.20.0\",\n \"picocolors\": \"^1.0.0\",\n \"remark-gfm\": \"^4.0.1\",\n \"sirv\": \"^2.0.4\",\n \"sugar-high\": \"^0.9.5\",\n \"supports-color\": \"^10.2.2\",\n \"tailwindcss\": \"4.1.18\",\n \"unstorage\": \"^2.0.0-alpha.3\",\n \"vite\": \"^5.0.10\",\n \"zod\": \"^4.1.12\"\n },\n \"devDependencies\": {\n \"@clerk/react\": \"^6.1.0\",\n \"@types/react\": \"^18.2.45\",\n \"@types/react-dom\": \"^18.2.18\",\n \"@vitest/coverage-v8\": \"^1.1.0\",\n \"jsdom\": \"^25.0.0\",\n \"react\": \"19.2.8\",\n \"react-dom\": \"19.2.8\",\n \"tsup\": \"^8.3.5\",\n \"typescript\": \"^5.3.3\",\n \"vitest\": \"^1.1.0\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.2.0 || ^19.0.0\",\n \"react-dom\": \"^18.2.0 || ^19.0.0\"\n },\n \"optionalDependencies\": {\n \"rolldown\": \"1.2.0\",\n \"sharp\": \"^0.34.5\",\n \"vite-rolldown\": \"npm:vite@8.1.5\"\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEE,cAAW;;;ADAN,IAAM,eAAe;","names":[]}
package/dist/version.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  FARM_VERSION
3
- } from "./chunk-JNYVN7YP.mjs";
3
+ } from "./chunk-EEABSBKK.mjs";
4
4
  import "./chunk-CGILA3WO.mjs";
5
5
  export {
6
6
  FARM_VERSION