@farm.js/core 0.1.0-beta.14 → 0.1.0-beta.17

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 (271) 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 +96 -0
  4. package/dist/agent-runtime.d.ts +96 -0
  5. package/dist/api/route-manager.cjs.map +1 -1
  6. package/dist/api/route-manager.d.mts +66 -0
  7. package/dist/api/route-manager.d.ts +66 -0
  8. package/dist/api/route-manager.mjs +2 -2
  9. package/dist/api/runtime.cjs.map +1 -1
  10. package/dist/api/runtime.d.mts +3 -0
  11. package/dist/api/runtime.d.ts +3 -0
  12. package/dist/api/runtime.mjs +1 -1
  13. package/dist/api.cjs +18 -10
  14. package/dist/api.cjs.map +1 -1
  15. package/dist/api.d.mts +48 -0
  16. package/dist/api.d.ts +48 -0
  17. package/dist/api.mjs +3 -3
  18. package/dist/app-B0tE1I3o.d.ts +306 -0
  19. package/dist/app-Dv2JJb7X.d.mts +306 -0
  20. package/dist/app-markdown.d.mts +24 -0
  21. package/dist/app-markdown.d.ts +24 -0
  22. package/dist/cache.d.mts +192 -0
  23. package/dist/cache.d.ts +192 -0
  24. package/dist/{chunk-VUL55IAX.mjs → chunk-2FLBZFPG.mjs} +19 -19
  25. package/dist/chunk-2FLBZFPG.mjs.map +1 -0
  26. package/dist/{chunk-B232I2GP.mjs → chunk-3HIVDX7J.mjs} +12 -1
  27. package/dist/chunk-3HIVDX7J.mjs.map +1 -0
  28. package/dist/{chunk-JDEOUK5V.mjs → chunk-6YXKHAFU.mjs} +3 -3
  29. package/dist/{chunk-Z5CQMP54.mjs → chunk-ARRYKOI5.mjs} +2 -2
  30. package/dist/{chunk-KLA67WKG.mjs → chunk-B3FFOIWS.mjs} +2 -2
  31. package/dist/chunk-E257KFBU.mjs +227 -0
  32. package/dist/chunk-E257KFBU.mjs.map +1 -0
  33. package/dist/{chunk-PFE6GMNE.mjs → chunk-HMRFYJK6.mjs} +19 -11
  34. package/dist/chunk-HMRFYJK6.mjs.map +1 -0
  35. package/dist/{chunk-OPHK6OJN.mjs → chunk-JAEAE27K.mjs} +2 -2
  36. package/dist/{chunk-32W4QEJP.mjs → chunk-KFTGPFRD.mjs} +1 -1
  37. package/dist/chunk-KFTGPFRD.mjs.map +1 -0
  38. package/dist/{chunk-L2PE36GQ.mjs → chunk-PZXBQKCH.mjs} +15 -6
  39. package/dist/chunk-PZXBQKCH.mjs.map +1 -0
  40. package/dist/{chunk-UXUAWNO5.mjs → chunk-RIXKJPGI.mjs} +117 -55
  41. package/dist/chunk-RIXKJPGI.mjs.map +1 -0
  42. package/dist/{chunk-PNFQQSRA.mjs → chunk-T2M5QANG.mjs} +143 -41
  43. package/dist/chunk-T2M5QANG.mjs.map +1 -0
  44. package/dist/{chunk-WDU6QXNK.mjs → chunk-UCYWGN2P.mjs} +1 -1
  45. package/dist/chunk-UCYWGN2P.mjs.map +1 -0
  46. package/dist/{chunk-65A7QIKI.mjs → chunk-UMVLB3PN.mjs} +3 -3
  47. package/dist/chunk-UMVLB3PN.mjs.map +1 -0
  48. package/dist/{chunk-ARCGE2VT.mjs → chunk-VFDBC3W7.mjs} +2 -2
  49. package/dist/{chunk-ARCGE2VT.mjs.map → chunk-VFDBC3W7.mjs.map} +1 -1
  50. package/dist/{chunk-VY2UYN5R.mjs → chunk-VPCFICID.mjs} +82 -3
  51. package/dist/chunk-VPCFICID.mjs.map +1 -0
  52. package/dist/{chunk-H3TE3LOV.mjs → chunk-XMFTIVJH.mjs} +2 -2
  53. package/dist/{chunk-UB5UOSHB.mjs → chunk-ZVMV3THA.mjs} +71 -2
  54. package/dist/chunk-ZVMV3THA.mjs.map +1 -0
  55. package/dist/chunk-recovery-lnQFzcQP.d.mts +26 -0
  56. package/dist/chunk-recovery-lnQFzcQP.d.ts +26 -0
  57. package/dist/client-BT1mFQas.d.mts +447 -0
  58. package/dist/client-Nn0q4eO4.d.ts +447 -0
  59. package/dist/client-cache-CIlyBlmx.d.ts +6 -0
  60. package/dist/client-cache-D-EZ7XVW.d.mts +6 -0
  61. package/dist/client-plugins-278AvYHE.d.mts +2021 -0
  62. package/dist/client-plugins-CTQAkr7R.d.ts +2021 -0
  63. package/dist/client-plugins.d.mts +24 -0
  64. package/dist/client-plugins.d.ts +24 -0
  65. package/dist/client.cjs.map +1 -1
  66. package/dist/client.d.mts +452 -0
  67. package/dist/client.d.ts +452 -0
  68. package/dist/client.mjs +3 -3
  69. package/dist/config.d.mts +31 -0
  70. package/dist/config.d.ts +31 -0
  71. package/dist/cron.d.mts +78 -0
  72. package/dist/cron.d.ts +78 -0
  73. package/dist/deferred.d.mts +42 -0
  74. package/dist/deferred.d.ts +42 -0
  75. package/dist/deployment.cjs +12 -0
  76. package/dist/deployment.cjs.map +1 -1
  77. package/dist/deployment.d.mts +36 -0
  78. package/dist/deployment.d.ts +36 -0
  79. package/dist/deployment.mjs +3 -1
  80. package/dist/{devtools-GAZ7F3KL.mjs → devtools-K2ERKGNI.mjs} +5 -5
  81. package/dist/docs.cjs.map +1 -1
  82. package/dist/docs.d.mts +80 -0
  83. package/dist/docs.d.ts +80 -0
  84. package/dist/docs.mjs +5 -5
  85. package/dist/env-types.d.mts +12 -0
  86. package/dist/env-types.d.ts +12 -0
  87. package/dist/env.d.mts +45 -0
  88. package/dist/env.d.ts +45 -0
  89. package/dist/environment/vite.d.mts +22 -0
  90. package/dist/environment/vite.d.ts +22 -0
  91. package/dist/environment.d.mts +18 -0
  92. package/dist/environment.d.ts +18 -0
  93. package/dist/font.d.mts +95 -0
  94. package/dist/font.d.ts +95 -0
  95. package/dist/headers.d.mts +22 -0
  96. package/dist/headers.d.ts +22 -0
  97. package/dist/i18n/client.d.mts +32 -0
  98. package/dist/i18n/client.d.ts +32 -0
  99. package/dist/i18n/index.d.mts +20 -0
  100. package/dist/i18n/index.d.ts +20 -0
  101. package/dist/i18n/server.d.mts +30 -0
  102. package/dist/i18n/server.d.ts +30 -0
  103. package/dist/image/server.d.mts +37 -0
  104. package/dist/image/server.d.ts +37 -0
  105. package/dist/image/sharp.d.mts +7 -0
  106. package/dist/image/sharp.d.ts +7 -0
  107. package/dist/image-config-Duob7wER.d.mts +50 -0
  108. package/dist/image-config-Duob7wER.d.ts +50 -0
  109. package/dist/image.d.mts +39 -0
  110. package/dist/image.d.ts +39 -0
  111. package/dist/index.cjs +598 -109
  112. package/dist/index.cjs.map +1 -1
  113. package/dist/index.d.mts +477 -0
  114. package/dist/index.d.ts +477 -0
  115. package/dist/index.mjs +45 -29
  116. package/dist/index.mjs.map +1 -1
  117. package/dist/integration-api-CHT2OKAf.d.mts +93 -0
  118. package/dist/integration-api-CHT2OKAf.d.ts +93 -0
  119. package/dist/integrations.d.mts +24 -0
  120. package/dist/integrations.d.ts +24 -0
  121. package/dist/internal/build-runtime.cjs +438 -176
  122. package/dist/internal/build-runtime.cjs.map +1 -1
  123. package/dist/internal/build-runtime.d.mts +41 -0
  124. package/dist/internal/build-runtime.d.ts +41 -0
  125. package/dist/internal/build-runtime.mjs +13 -13
  126. package/dist/internal/client-runtime.d.mts +17 -0
  127. package/dist/internal/client-runtime.d.ts +17 -0
  128. package/dist/internal/config-runtime.cjs +140 -1
  129. package/dist/internal/config-runtime.cjs.map +1 -1
  130. package/dist/internal/config-runtime.d.mts +41 -0
  131. package/dist/internal/config-runtime.d.ts +41 -0
  132. package/dist/internal/config-runtime.mjs +4 -4
  133. package/dist/internal/metadata-image-runtime.d.mts +25 -0
  134. package/dist/internal/metadata-image-runtime.d.ts +25 -0
  135. package/dist/internal/production-node-env.d.mts +12 -0
  136. package/dist/internal/production-node-env.d.ts +12 -0
  137. package/dist/internal/production-runtime.d.mts +44 -0
  138. package/dist/internal/production-runtime.d.ts +44 -0
  139. package/dist/island-CfGru1MO.d.mts +9 -0
  140. package/dist/island-CfGru1MO.d.ts +9 -0
  141. package/dist/markdown.d.mts +60 -0
  142. package/dist/markdown.d.ts +60 -0
  143. package/dist/metadata-DmCudMw_.d.mts +22 -0
  144. package/dist/metadata-xghtOlbR.d.ts +22 -0
  145. package/dist/middleware.cjs +116 -98
  146. package/dist/middleware.cjs.map +1 -1
  147. package/dist/middleware.d.mts +171 -0
  148. package/dist/middleware.d.ts +171 -0
  149. package/dist/middleware.mjs +5 -2
  150. package/dist/navigation-errors-Dvwpzaer.d.mts +13 -0
  151. package/dist/navigation-errors-Dvwpzaer.d.ts +13 -0
  152. package/dist/navigation.cjs.map +1 -1
  153. package/dist/navigation.d.mts +14 -0
  154. package/dist/navigation.d.ts +14 -0
  155. package/dist/navigation.mjs +3 -3
  156. package/dist/observability.d.mts +335 -0
  157. package/dist/observability.d.ts +335 -0
  158. package/dist/params-BALtrRim.d.ts +15 -0
  159. package/dist/params-ry-lxqmy.d.mts +15 -0
  160. package/dist/plugin-BJDf43dc.d.mts +165 -0
  161. package/dist/plugin-BJDf43dc.d.ts +165 -0
  162. package/dist/plugin.cjs +247 -28
  163. package/dist/plugin.cjs.map +1 -1
  164. package/dist/plugin.d.mts +24 -0
  165. package/dist/plugin.d.ts +24 -0
  166. package/dist/plugin.mjs +10 -10
  167. package/dist/production-runtime-BLxSv9cU.d.ts +79 -0
  168. package/dist/production-runtime-DFN2_RXq.d.mts +79 -0
  169. package/dist/query/client.d.mts +61 -0
  170. package/dist/query/client.d.ts +61 -0
  171. package/dist/query/index.d.mts +90 -0
  172. package/dist/query/index.d.ts +90 -0
  173. package/dist/query/parsers.d.mts +25 -0
  174. package/dist/query/parsers.d.ts +25 -0
  175. package/dist/query/server.d.mts +55 -0
  176. package/dist/query/server.d.ts +55 -0
  177. package/dist/request-Cq5d6qmE.d.mts +6 -0
  178. package/dist/request-LoxDW3lp.d.ts +6 -0
  179. package/dist/request.d.mts +25 -0
  180. package/dist/request.d.ts +25 -0
  181. package/dist/resolver-DJqjLMg_.d.mts +14 -0
  182. package/dist/resolver-IH4RmPEl.d.ts +14 -0
  183. package/dist/route-runtime-DoOHzCAD.d.mts +38 -0
  184. package/dist/route-runtime-DoOHzCAD.d.ts +38 -0
  185. package/dist/router.d.mts +36 -0
  186. package/dist/router.d.ts +36 -0
  187. package/dist/routes.d.mts +226 -0
  188. package/dist/routes.d.ts +226 -0
  189. package/dist/runtime-BA9TOSu1.d.mts +231 -0
  190. package/dist/runtime-Cxpq6xZN.d.mts +27 -0
  191. package/dist/runtime-DTAQ2HDv.d.ts +231 -0
  192. package/dist/runtime-bv63eUiO.d.ts +27 -0
  193. package/dist/server-action-security.cjs +23 -1
  194. package/dist/server-action-security.cjs.map +1 -1
  195. package/dist/server-action-security.d.mts +45 -0
  196. package/dist/server-action-security.d.ts +45 -0
  197. package/dist/server-action-security.mjs +1 -1
  198. package/dist/server-fn-client.cjs.map +1 -1
  199. package/dist/server-fn-client.d.mts +33 -0
  200. package/dist/server-fn-client.d.ts +33 -0
  201. package/dist/server-fn-client.mjs +1 -1
  202. package/dist/server-fn-error-DDh14a0V.d.mts +26 -0
  203. package/dist/server-fn-error-DDh14a0V.d.ts +26 -0
  204. package/dist/server-fn.cjs +140 -3
  205. package/dist/server-fn.cjs.map +1 -1
  206. package/dist/server-fn.d.mts +121 -0
  207. package/dist/server-fn.d.ts +121 -0
  208. package/dist/server-fn.mjs +14 -3
  209. package/dist/server-plugins.d.mts +57 -0
  210. package/dist/server-plugins.d.ts +57 -0
  211. package/dist/server-query-client.d.mts +51 -0
  212. package/dist/server-query-client.d.ts +51 -0
  213. package/dist/server-query.cjs +99 -1
  214. package/dist/server-query.cjs.map +1 -1
  215. package/dist/server-query.d.mts +37 -0
  216. package/dist/server-query.d.ts +37 -0
  217. package/dist/server-query.mjs +3 -3
  218. package/dist/server.cjs +403 -33
  219. package/dist/server.cjs.map +1 -1
  220. package/dist/server.d.mts +51 -0
  221. package/dist/server.d.ts +51 -0
  222. package/dist/server.mjs +14 -14
  223. package/dist/storage.d.mts +52 -0
  224. package/dist/storage.d.ts +52 -0
  225. package/dist/testing.cjs.map +1 -1
  226. package/dist/testing.d.mts +103 -0
  227. package/dist/testing.d.ts +103 -0
  228. package/dist/testing.mjs +3 -3
  229. package/dist/transport-BmbGTXA5.d.mts +49 -0
  230. package/dist/transport-BmbGTXA5.d.ts +49 -0
  231. package/dist/types-BMxWr97v.d.mts +81 -0
  232. package/dist/types-BMxWr97v.d.ts +81 -0
  233. package/dist/types-D1A6-XvH.d.mts +73 -0
  234. package/dist/types-D1A6-XvH.d.ts +73 -0
  235. package/dist/types-DTzm4TCl.d.mts +78 -0
  236. package/dist/types-DTzm4TCl.d.ts +78 -0
  237. package/dist/utils-B6GaYNJL.d.ts +23 -0
  238. package/dist/utils-CKSHiip6.d.mts +23 -0
  239. package/dist/version.cjs +1 -1
  240. package/dist/version.cjs.map +1 -1
  241. package/dist/version.d.mts +3 -0
  242. package/dist/version.d.ts +3 -0
  243. package/dist/version.mjs +1 -1
  244. package/dist/vite.cjs +255 -30
  245. package/dist/vite.cjs.map +1 -1
  246. package/dist/vite.d.mts +24 -0
  247. package/dist/vite.d.ts +24 -0
  248. package/dist/vite.mjs +10 -10
  249. package/dist/workflows.d.mts +110 -0
  250. package/dist/workflows.d.ts +110 -0
  251. package/package.json +1 -1
  252. package/types/middleware.d.ts +36 -11
  253. package/dist/chunk-32W4QEJP.mjs.map +0 -1
  254. package/dist/chunk-65A7QIKI.mjs.map +0 -1
  255. package/dist/chunk-B232I2GP.mjs.map +0 -1
  256. package/dist/chunk-I4CUBGVF.mjs +0 -93
  257. package/dist/chunk-I4CUBGVF.mjs.map +0 -1
  258. package/dist/chunk-L2PE36GQ.mjs.map +0 -1
  259. package/dist/chunk-PFE6GMNE.mjs.map +0 -1
  260. package/dist/chunk-PNFQQSRA.mjs.map +0 -1
  261. package/dist/chunk-UB5UOSHB.mjs.map +0 -1
  262. package/dist/chunk-UXUAWNO5.mjs.map +0 -1
  263. package/dist/chunk-VUL55IAX.mjs.map +0 -1
  264. package/dist/chunk-VY2UYN5R.mjs.map +0 -1
  265. package/dist/chunk-WDU6QXNK.mjs.map +0 -1
  266. /package/dist/{chunk-JDEOUK5V.mjs.map → chunk-6YXKHAFU.mjs.map} +0 -0
  267. /package/dist/{chunk-Z5CQMP54.mjs.map → chunk-ARRYKOI5.mjs.map} +0 -0
  268. /package/dist/{chunk-KLA67WKG.mjs.map → chunk-B3FFOIWS.mjs.map} +0 -0
  269. /package/dist/{chunk-OPHK6OJN.mjs.map → chunk-JAEAE27K.mjs.map} +0 -0
  270. /package/dist/{chunk-H3TE3LOV.mjs.map → chunk-XMFTIVJH.mjs.map} +0 -0
  271. /package/dist/{devtools-GAZ7F3KL.mjs.map → devtools-K2ERKGNI.mjs.map} +0 -0
@@ -0,0 +1,33 @@
1
+ import { ServerFn } from './server-fn.mjs';
2
+ import './cache.mjs';
3
+ import './server-fn-error-DDh14a0V.mjs';
4
+
5
+ type ServerFnActionStatus = "idle" | "pending" | "success" | "error";
6
+ type ServerFnSubmit<TInput, TResult> = [unknown] extends [TInput] ? (input?: TInput | FormData) => Promise<TResult> : (input: TInput | FormData) => Promise<TResult>;
7
+ type ServerFnOptimisticContext<TInput, TResult> = {
8
+ input: TInput | FormData | undefined;
9
+ formData?: FormData;
10
+ current: TResult | null;
11
+ };
12
+ type UseServerFnOptions<TResult, TError extends Error = Error, TInput = unknown> = {
13
+ initialResult?: TResult | null;
14
+ resetOnSubmit?: boolean;
15
+ throwOnFormError?: boolean;
16
+ optimistic?: (context: ServerFnOptimisticContext<TInput, TResult>) => TResult | null | undefined;
17
+ rollbackOnError?: boolean;
18
+ onSuccess?: (result: TResult) => void;
19
+ onError?: (error: TError) => void;
20
+ onSettled?: (result: TResult | null, error: TError | null) => void;
21
+ };
22
+ type UseServerFnReturn<TInput, TResult, TError extends Error = Error> = {
23
+ pending: boolean;
24
+ status: ServerFnActionStatus;
25
+ result: TResult | null;
26
+ error: TError | null;
27
+ submit: ServerFnSubmit<TInput, TResult>;
28
+ formAction: (formData: FormData) => Promise<void>;
29
+ reset: () => void;
30
+ };
31
+ declare function useServerFn<TInput, TResult, TError extends Error = Error>(serverFn: ServerFn<TInput, TResult, TError>, options?: UseServerFnOptions<TResult, TError, TInput>): UseServerFnReturn<TInput, TResult, TError>;
32
+
33
+ export { type ServerFnActionStatus, type ServerFnOptimisticContext, type ServerFnSubmit, type UseServerFnOptions, type UseServerFnReturn, useServerFn };
@@ -0,0 +1,33 @@
1
+ import { ServerFn } from './server-fn.js';
2
+ import './cache.js';
3
+ import './server-fn-error-DDh14a0V.js';
4
+
5
+ type ServerFnActionStatus = "idle" | "pending" | "success" | "error";
6
+ type ServerFnSubmit<TInput, TResult> = [unknown] extends [TInput] ? (input?: TInput | FormData) => Promise<TResult> : (input: TInput | FormData) => Promise<TResult>;
7
+ type ServerFnOptimisticContext<TInput, TResult> = {
8
+ input: TInput | FormData | undefined;
9
+ formData?: FormData;
10
+ current: TResult | null;
11
+ };
12
+ type UseServerFnOptions<TResult, TError extends Error = Error, TInput = unknown> = {
13
+ initialResult?: TResult | null;
14
+ resetOnSubmit?: boolean;
15
+ throwOnFormError?: boolean;
16
+ optimistic?: (context: ServerFnOptimisticContext<TInput, TResult>) => TResult | null | undefined;
17
+ rollbackOnError?: boolean;
18
+ onSuccess?: (result: TResult) => void;
19
+ onError?: (error: TError) => void;
20
+ onSettled?: (result: TResult | null, error: TError | null) => void;
21
+ };
22
+ type UseServerFnReturn<TInput, TResult, TError extends Error = Error> = {
23
+ pending: boolean;
24
+ status: ServerFnActionStatus;
25
+ result: TResult | null;
26
+ error: TError | null;
27
+ submit: ServerFnSubmit<TInput, TResult>;
28
+ formAction: (formData: FormData) => Promise<void>;
29
+ reset: () => void;
30
+ };
31
+ declare function useServerFn<TInput, TResult, TError extends Error = Error>(serverFn: ServerFn<TInput, TResult, TError>, options?: UseServerFnOptions<TResult, TError, TInput>): UseServerFnReturn<TInput, TResult, TError>;
32
+
33
+ export { type ServerFnActionStatus, type ServerFnOptimisticContext, type ServerFnSubmit, type UseServerFnOptions, type UseServerFnReturn, useServerFn };
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  useServerFn
4
- } from "./chunk-32W4QEJP.mjs";
4
+ } from "./chunk-KFTGPFRD.mjs";
5
5
  import "./chunk-CGILA3WO.mjs";
6
6
  export {
7
7
  useServerFn
@@ -0,0 +1,26 @@
1
+ declare const FARM_SERVER_FN_FAILURE_SYMBOL: unique symbol;
2
+ type SerializedServerFnFailure = {
3
+ name: "ServerFnFailure";
4
+ message: string;
5
+ code: string;
6
+ status: number;
7
+ data: unknown;
8
+ };
9
+ declare class ServerFnFailure<TCode extends string = string, TData = unknown, TStatus extends number = number> extends Error {
10
+ readonly name: "ServerFnFailure";
11
+ readonly code: TCode;
12
+ readonly data: TData;
13
+ readonly status: TStatus;
14
+ constructor(code: TCode, data: TData, options: {
15
+ status: TStatus;
16
+ message: string;
17
+ });
18
+ }
19
+ declare class ServerActionError extends Error {
20
+ readonly name: "ServerActionError";
21
+ constructor(message?: string);
22
+ }
23
+ declare function isServerFnFailure(value: unknown): value is ServerFnFailure;
24
+ declare function createServerFnTransportError(value: unknown): ServerFnFailure | ServerActionError;
25
+
26
+ export { FARM_SERVER_FN_FAILURE_SYMBOL as F, ServerFnFailure as S, ServerActionError as a, type SerializedServerFnFailure as b, createServerFnTransportError as c, isServerFnFailure as i };
@@ -0,0 +1,26 @@
1
+ declare const FARM_SERVER_FN_FAILURE_SYMBOL: unique symbol;
2
+ type SerializedServerFnFailure = {
3
+ name: "ServerFnFailure";
4
+ message: string;
5
+ code: string;
6
+ status: number;
7
+ data: unknown;
8
+ };
9
+ declare class ServerFnFailure<TCode extends string = string, TData = unknown, TStatus extends number = number> extends Error {
10
+ readonly name: "ServerFnFailure";
11
+ readonly code: TCode;
12
+ readonly data: TData;
13
+ readonly status: TStatus;
14
+ constructor(code: TCode, data: TData, options: {
15
+ status: TStatus;
16
+ message: string;
17
+ });
18
+ }
19
+ declare class ServerActionError extends Error {
20
+ readonly name: "ServerActionError";
21
+ constructor(message?: string);
22
+ }
23
+ declare function isServerFnFailure(value: unknown): value is ServerFnFailure;
24
+ declare function createServerFnTransportError(value: unknown): ServerFnFailure | ServerActionError;
25
+
26
+ export { FARM_SERVER_FN_FAILURE_SYMBOL as F, ServerFnFailure as S, ServerActionError as a, type SerializedServerFnFailure as b, createServerFnTransportError as c, isServerFnFailure as i };
@@ -21,10 +21,15 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  // src/server-fn.ts
22
22
  var server_fn_exports = {};
23
23
  __export(server_fn_exports, {
24
+ FARM_SERVER_FN_FAILURE_SYMBOL: () => FARM_SERVER_FN_FAILURE_SYMBOL,
24
25
  FARM_SERVER_FN_SYMBOL: () => FARM_SERVER_FN_SYMBOL,
26
+ ServerActionError: () => ServerActionError,
27
+ ServerFnFailure: () => ServerFnFailure,
25
28
  _parseServerFnSchema: () => _parseServerFnSchema,
26
29
  createServerFn: () => createServerFn,
27
- createServerMiddleware: () => createServerMiddleware
30
+ createServerFnTransportError: () => createServerFnTransportError,
31
+ createServerMiddleware: () => createServerMiddleware,
32
+ isServerFnFailure: () => isServerFnFailure
28
33
  });
29
34
  module.exports = __toCommonJS(server_fn_exports);
30
35
 
@@ -67,6 +72,55 @@ function subscribeFarmCacheTask(listener) {
67
72
  }
68
73
  __name(subscribeFarmCacheTask, "subscribeFarmCacheTask");
69
74
 
75
+ // src/server-fn-error.ts
76
+ var FARM_SERVER_FN_FAILURE_SYMBOL = /* @__PURE__ */ Symbol.for("farm.server-fn.failure");
77
+ var _ServerFnFailure = class _ServerFnFailure extends Error {
78
+ constructor(code, data, options) {
79
+ super(options.message);
80
+ this.name = "ServerFnFailure";
81
+ this.code = code;
82
+ this.data = data;
83
+ this.status = options.status;
84
+ Object.defineProperty(this, FARM_SERVER_FN_FAILURE_SYMBOL, {
85
+ value: true,
86
+ enumerable: false
87
+ });
88
+ }
89
+ };
90
+ __name(_ServerFnFailure, "ServerFnFailure");
91
+ var ServerFnFailure = _ServerFnFailure;
92
+ var _ServerActionError = class _ServerActionError extends Error {
93
+ constructor(message = "Server function failed") {
94
+ super(message);
95
+ this.name = "ServerActionError";
96
+ }
97
+ };
98
+ __name(_ServerActionError, "ServerActionError");
99
+ var ServerActionError = _ServerActionError;
100
+ function isServerFnFailure(value) {
101
+ if (!value || typeof value !== "object") return false;
102
+ const candidate = value;
103
+ return candidate[FARM_SERVER_FN_FAILURE_SYMBOL] === true && candidate.name === "ServerFnFailure" && typeof candidate.code === "string" && Number.isInteger(candidate.status) && (candidate.status ?? 0) >= 400 && (candidate.status ?? 0) <= 599;
104
+ }
105
+ __name(isServerFnFailure, "isServerFnFailure");
106
+ function createServerFnTransportError(value) {
107
+ if (isSerializedServerFnFailure(value)) {
108
+ return new ServerFnFailure(value.code, value.data, {
109
+ status: value.status,
110
+ message: value.message
111
+ });
112
+ }
113
+ const message = value && typeof value === "object" && "message" in value && typeof value.message === "string" ? value.message : "Server function failed";
114
+ return new ServerActionError(message);
115
+ }
116
+ __name(createServerFnTransportError, "createServerFnTransportError");
117
+ function isSerializedServerFnFailure(value) {
118
+ if (!value || typeof value !== "object") return false;
119
+ const candidate = value;
120
+ return candidate.name === "ServerFnFailure" && typeof candidate.message === "string" && typeof candidate.code === "string" && Number.isInteger(candidate.status) && (candidate.status ?? 0) >= 400 && (candidate.status ?? 0) <= 599 && "data" in candidate;
121
+ }
122
+ __name(isSerializedServerFnFailure, "isSerializedServerFnFailure");
123
+
70
124
  // src/server-action-security.ts
71
125
  var SERVER_ACTION_STORAGE_KEY = /* @__PURE__ */ Symbol.for("farm.serverActionStorage");
72
126
  var FALLBACK_ABORT_CONTROLLER_KEY = /* @__PURE__ */ Symbol.for("farm.serverActionFallbackAbortController");
@@ -877,6 +931,8 @@ function createServerFn(options) {
877
931
  throw new TypeError("createServerFn requires a handler function");
878
932
  }
879
933
  const middleware = resolveServerFnMiddleware(options.middleware);
934
+ const errors = normalizeServerFnErrors(options.errors);
935
+ const error = createServerFnErrorHandler(errors);
880
936
  const serverFn = /* @__PURE__ */ __name(async (value) => {
881
937
  const formData = isFormData(value) ? value : void 0;
882
938
  const rawInput = formData ? formDataToObject(formData) : value;
@@ -894,7 +950,7 @@ function createServerFn(options) {
894
950
  let resolvedContext = Object.freeze(/* @__PURE__ */ Object.create(null));
895
951
  const result = await runServerFnMiddleware(middleware, handlerContext, async (context) => {
896
952
  resolvedContext = context.context;
897
- return options.handler(context);
953
+ return options.handler({ ...context, error });
898
954
  });
899
955
  const parsedResult = await _parseServerFnSchema(options.output, result, "output");
900
956
  if (options.invalidates) {
@@ -924,6 +980,10 @@ function createServerFn(options) {
924
980
  value: options.output,
925
981
  enumerable: false
926
982
  },
983
+ __farmServerFnError: {
984
+ value: void 0,
985
+ enumerable: false
986
+ },
927
987
  __farmServerFnMiddleware: {
928
988
  value: middleware,
929
989
  enumerable: false
@@ -962,6 +1022,78 @@ async function runServerFnMiddleware(middleware, handlerContext, handler) {
962
1022
  return dispatch(0, Object.freeze(/* @__PURE__ */ Object.create(null)));
963
1023
  }
964
1024
  __name(runServerFnMiddleware, "runServerFnMiddleware");
1025
+ function normalizeServerFnErrors(definitions) {
1026
+ if (definitions === void 0) return Object.freeze({});
1027
+ if (!isPlainServerFnObject(definitions)) {
1028
+ throw new TypeError("createServerFn errors must be an object");
1029
+ }
1030
+ const normalized = /* @__PURE__ */ Object.create(null);
1031
+ for (const [code, definition] of Object.entries(definitions)) {
1032
+ if (!code.trim()) {
1033
+ throw new TypeError("Server function error codes cannot be empty");
1034
+ }
1035
+ if (!definition || typeof definition !== "object") {
1036
+ throw new TypeError(`Server function error "${code}" must be an object`);
1037
+ }
1038
+ if (!Number.isInteger(definition.status) || definition.status < 400 || definition.status > 599) {
1039
+ throw new TypeError(
1040
+ `Server function error "${code}" status must be an integer between 400 and 599`
1041
+ );
1042
+ }
1043
+ if (!definition.data || typeof definition.data.parse !== "function" && typeof definition.data.safeParse !== "function") {
1044
+ throw new TypeError(
1045
+ `Server function error "${code}" data must provide synchronous parse() or safeParse()`
1046
+ );
1047
+ }
1048
+ if (definition.message !== void 0 && typeof definition.message !== "string") {
1049
+ throw new TypeError(`Server function error "${code}" message must be a string`);
1050
+ }
1051
+ normalized[code] = Object.freeze({ ...definition });
1052
+ }
1053
+ return Object.freeze(normalized);
1054
+ }
1055
+ __name(normalizeServerFnErrors, "normalizeServerFnErrors");
1056
+ function createServerFnErrorHandler(definitions) {
1057
+ return ((code, data) => {
1058
+ const definition = definitions[code];
1059
+ if (!definition) {
1060
+ throw new TypeError(`Server function error "${code}" is not declared`);
1061
+ }
1062
+ const parsed = parseServerFnFailureData(code, definition.data, data);
1063
+ throw new ServerFnFailure(code, parsed, {
1064
+ status: definition.status,
1065
+ message: definition.message ?? "Server function failed"
1066
+ });
1067
+ });
1068
+ }
1069
+ __name(createServerFnErrorHandler, "createServerFnErrorHandler");
1070
+ function parseServerFnFailureData(code, schema, value) {
1071
+ if (typeof schema.safeParse === "function") {
1072
+ const result2 = schema.safeParse(value);
1073
+ if (isPromiseLike(result2)) {
1074
+ throw new TypeError(`Server function error "${code}" data schema must parse synchronously`);
1075
+ }
1076
+ return unwrapSafeParseResult(result2);
1077
+ }
1078
+ const result = schema.parse(value);
1079
+ if (isPromiseLike(result)) {
1080
+ throw new TypeError(`Server function error "${code}" data schema must parse synchronously`);
1081
+ }
1082
+ return result;
1083
+ }
1084
+ __name(parseServerFnFailureData, "parseServerFnFailureData");
1085
+ function isPlainServerFnObject(value) {
1086
+ if (!value || typeof value !== "object" || Array.isArray(value)) return false;
1087
+ const prototype = Object.getPrototypeOf(value);
1088
+ return prototype === Object.prototype || prototype === null;
1089
+ }
1090
+ __name(isPlainServerFnObject, "isPlainServerFnObject");
1091
+ function isPromiseLike(value) {
1092
+ return Boolean(
1093
+ value && (typeof value === "object" || typeof value === "function") && "then" in value && typeof value.then === "function"
1094
+ );
1095
+ }
1096
+ __name(isPromiseLike, "isPromiseLike");
965
1097
  function resolveServerFnMiddleware(middleware) {
966
1098
  const resolved = [];
967
1099
  const seen = /* @__PURE__ */ new Set();
@@ -1058,9 +1190,14 @@ function isFormData(value) {
1058
1190
  __name(isFormData, "isFormData");
1059
1191
  // Annotate the CommonJS export names for ESM import in node:
1060
1192
  0 && (module.exports = {
1193
+ FARM_SERVER_FN_FAILURE_SYMBOL,
1061
1194
  FARM_SERVER_FN_SYMBOL,
1195
+ ServerActionError,
1196
+ ServerFnFailure,
1062
1197
  _parseServerFnSchema,
1063
1198
  createServerFn,
1064
- createServerMiddleware
1199
+ createServerFnTransportError,
1200
+ createServerMiddleware,
1201
+ isServerFnFailure
1065
1202
  });
1066
1203
  //# sourceMappingURL=server-fn.cjs.map