@farm.js/core 0.1.0-beta.21 → 0.1.0-beta.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/dist/after.d.mts +25 -0
  2. package/dist/after.d.ts +25 -0
  3. package/dist/agent-runtime.d.mts +97 -0
  4. package/dist/agent-runtime.d.ts +97 -0
  5. package/dist/api/route-manager.d.mts +68 -0
  6. package/dist/api/route-manager.d.ts +68 -0
  7. package/dist/api/runtime.d.mts +3 -0
  8. package/dist/api/runtime.d.ts +3 -0
  9. package/dist/api.cjs +22 -19
  10. package/dist/api.cjs.map +1 -1
  11. package/dist/api.d.mts +50 -0
  12. package/dist/api.d.ts +50 -0
  13. package/dist/api.mjs +2 -1
  14. package/dist/app-CTFnOJaI.d.ts +308 -0
  15. package/dist/app-DA6ospIq.d.mts +308 -0
  16. package/dist/app-markdown.d.mts +25 -0
  17. package/dist/app-markdown.d.ts +25 -0
  18. package/dist/cache.d.mts +192 -0
  19. package/dist/cache.d.ts +192 -0
  20. package/dist/{chunk-MIUW47JX.mjs → chunk-2PEJGY5V.mjs} +15 -20
  21. package/dist/chunk-2PEJGY5V.mjs.map +1 -0
  22. package/dist/{chunk-RIXKJPGI.mjs → chunk-42325TLU.mjs} +2 -2
  23. package/dist/chunk-4IVNW5QD.mjs +82 -0
  24. package/dist/chunk-4IVNW5QD.mjs.map +1 -0
  25. package/dist/{chunk-I3UWA2P2.mjs → chunk-5NOVWCFL.mjs} +2 -2
  26. package/dist/chunk-5NOVWCFL.mjs.map +1 -0
  27. package/dist/chunk-D42BNPZH.mjs +79 -0
  28. package/dist/chunk-D42BNPZH.mjs.map +1 -0
  29. package/dist/{chunk-LLPN5SEZ.mjs → chunk-DVPRBMU2.mjs} +2 -2
  30. package/dist/{chunk-VIC7NJ77.mjs → chunk-FJGTYLCO.mjs} +67 -20
  31. package/dist/chunk-FJGTYLCO.mjs.map +1 -0
  32. package/dist/chunk-GIELMNBG.mjs +15 -0
  33. package/dist/chunk-GIELMNBG.mjs.map +1 -0
  34. package/dist/chunk-GQVQESLY.mjs +25 -0
  35. package/dist/chunk-GQVQESLY.mjs.map +1 -0
  36. package/dist/chunk-H53KVQUU.mjs +48 -0
  37. package/dist/chunk-H53KVQUU.mjs.map +1 -0
  38. package/dist/chunk-HCGQYYHI.mjs +1 -0
  39. package/dist/chunk-HCGQYYHI.mjs.map +1 -0
  40. package/dist/{chunk-4EATUJFO.mjs → chunk-ICTGDDV4.mjs} +20 -22
  41. package/dist/chunk-ICTGDDV4.mjs.map +1 -0
  42. package/dist/{chunk-UCYWGN2P.mjs → chunk-OHNSROHS.mjs} +1 -1
  43. package/dist/{chunk-FRPWCMMG.mjs → chunk-SBWOTAX4.mjs} +63 -2
  44. package/dist/chunk-SBWOTAX4.mjs.map +1 -0
  45. package/dist/{chunk-FKKM7HVF.mjs → chunk-TX54PXAJ.mjs} +109 -58
  46. package/dist/chunk-TX54PXAJ.mjs.map +1 -0
  47. package/dist/{chunk-CEVMYGDL.mjs → chunk-YD5IRKVS.mjs} +13 -9
  48. package/dist/chunk-YD5IRKVS.mjs.map +1 -0
  49. package/dist/chunk-recovery-lnQFzcQP.d.mts +26 -0
  50. package/dist/chunk-recovery-lnQFzcQP.d.ts +26 -0
  51. package/dist/client-BT1mFQas.d.mts +447 -0
  52. package/dist/client-Nn0q4eO4.d.ts +447 -0
  53. package/dist/client-cache-CIlyBlmx.d.ts +6 -0
  54. package/dist/client-cache-D-EZ7XVW.d.mts +6 -0
  55. package/dist/client-plugins-CCilIb_G.d.mts +2092 -0
  56. package/dist/client-plugins-DuuleQKk.d.ts +2092 -0
  57. package/dist/client-plugins.d.mts +25 -0
  58. package/dist/client-plugins.d.ts +25 -0
  59. package/dist/client.cjs +122 -35
  60. package/dist/client.cjs.map +1 -1
  61. package/dist/client.d.mts +454 -0
  62. package/dist/client.d.ts +454 -0
  63. package/dist/client.mjs +13 -2
  64. package/dist/config.d.mts +32 -0
  65. package/dist/config.d.ts +32 -0
  66. package/dist/cron.d.mts +78 -0
  67. package/dist/cron.d.ts +78 -0
  68. package/dist/deferred.d.mts +42 -0
  69. package/dist/deferred.d.ts +42 -0
  70. package/dist/deployment.d.mts +36 -0
  71. package/dist/deployment.d.ts +36 -0
  72. package/dist/{devtools-52FYXIEK.mjs → devtools-326RBQCN.mjs} +7 -6
  73. package/dist/{devtools-52FYXIEK.mjs.map → devtools-326RBQCN.mjs.map} +1 -1
  74. package/dist/docs.cjs.map +1 -1
  75. package/dist/docs.d.mts +80 -0
  76. package/dist/docs.d.ts +80 -0
  77. package/dist/docs.mjs +6 -5
  78. package/dist/env-types.d.mts +12 -0
  79. package/dist/env-types.d.ts +12 -0
  80. package/dist/env.d.mts +45 -0
  81. package/dist/env.d.ts +45 -0
  82. package/dist/environment/vite.d.mts +22 -0
  83. package/dist/environment/vite.d.ts +22 -0
  84. package/dist/environment.d.mts +18 -0
  85. package/dist/environment.d.ts +18 -0
  86. package/dist/font.d.mts +95 -0
  87. package/dist/font.d.ts +95 -0
  88. package/dist/headers.d.mts +22 -0
  89. package/dist/headers.d.ts +22 -0
  90. package/dist/i18n/client.d.mts +32 -0
  91. package/dist/i18n/client.d.ts +32 -0
  92. package/dist/i18n/index.d.mts +20 -0
  93. package/dist/i18n/index.d.ts +20 -0
  94. package/dist/i18n/server.d.mts +30 -0
  95. package/dist/i18n/server.d.ts +30 -0
  96. package/dist/image/server.d.mts +37 -0
  97. package/dist/image/server.d.ts +37 -0
  98. package/dist/image/sharp.d.mts +7 -0
  99. package/dist/image/sharp.d.ts +7 -0
  100. package/dist/image-config-Duob7wER.d.mts +50 -0
  101. package/dist/image-config-Duob7wER.d.ts +50 -0
  102. package/dist/image.d.mts +39 -0
  103. package/dist/image.d.ts +39 -0
  104. package/dist/index.cjs +496 -123
  105. package/dist/index.cjs.map +1 -1
  106. package/dist/index.d.mts +480 -0
  107. package/dist/index.d.ts +480 -0
  108. package/dist/index.mjs +70 -52
  109. package/dist/index.mjs.map +1 -1
  110. package/dist/integration-api-CHT2OKAf.d.mts +93 -0
  111. package/dist/integration-api-CHT2OKAf.d.ts +93 -0
  112. package/dist/integrations.d.mts +25 -0
  113. package/dist/integrations.d.ts +25 -0
  114. package/dist/internal/build-runtime.cjs +386 -83
  115. package/dist/internal/build-runtime.cjs.map +1 -1
  116. package/dist/internal/build-runtime.d.mts +42 -0
  117. package/dist/internal/build-runtime.d.ts +42 -0
  118. package/dist/internal/build-runtime.mjs +17 -13
  119. package/dist/internal/client-runtime.d.mts +17 -0
  120. package/dist/internal/client-runtime.d.ts +17 -0
  121. package/dist/internal/config-runtime.cjs +41 -0
  122. package/dist/internal/config-runtime.cjs.map +1 -1
  123. package/dist/internal/config-runtime.d.mts +42 -0
  124. package/dist/internal/config-runtime.d.ts +42 -0
  125. package/dist/internal/config-runtime.mjs +5 -4
  126. package/dist/internal/metadata-image-runtime.d.mts +25 -0
  127. package/dist/internal/metadata-image-runtime.d.ts +25 -0
  128. package/dist/internal/production-node-env.d.mts +12 -0
  129. package/dist/internal/production-node-env.d.ts +12 -0
  130. package/dist/internal/production-runtime.cjs +178 -0
  131. package/dist/internal/production-runtime.cjs.map +1 -1
  132. package/dist/internal/production-runtime.d.mts +80 -0
  133. package/dist/internal/production-runtime.d.ts +80 -0
  134. package/dist/internal/production-runtime.mjs +13 -1
  135. package/dist/internal/production-runtime.mjs.map +1 -1
  136. package/dist/island-CfGru1MO.d.mts +9 -0
  137. package/dist/island-CfGru1MO.d.ts +9 -0
  138. package/dist/markdown.d.mts +60 -0
  139. package/dist/markdown.d.ts +60 -0
  140. package/dist/metadata-DyPRG0wX.d.ts +22 -0
  141. package/dist/metadata-_GHcAySx.d.mts +22 -0
  142. package/dist/middleware.cjs +17 -17
  143. package/dist/middleware.cjs.map +1 -1
  144. package/dist/middleware.d.mts +172 -0
  145. package/dist/middleware.d.ts +172 -0
  146. package/dist/middleware.mjs +3 -2
  147. package/dist/navigation-errors-Dvwpzaer.d.mts +13 -0
  148. package/dist/navigation-errors-Dvwpzaer.d.ts +13 -0
  149. package/dist/navigation.d.mts +14 -0
  150. package/dist/navigation.d.ts +14 -0
  151. package/dist/observability.d.mts +335 -0
  152. package/dist/observability.d.ts +335 -0
  153. package/dist/params-BALtrRim.d.ts +15 -0
  154. package/dist/params-ry-lxqmy.d.mts +15 -0
  155. package/dist/plugin-BJDf43dc.d.mts +165 -0
  156. package/dist/plugin-BJDf43dc.d.ts +165 -0
  157. package/dist/plugin.cjs +261 -62
  158. package/dist/plugin.cjs.map +1 -1
  159. package/dist/plugin.d.mts +25 -0
  160. package/dist/plugin.d.ts +25 -0
  161. package/dist/plugin.mjs +13 -9
  162. package/dist/production-runtime-C4cO3esK.d.mts +81 -0
  163. package/dist/production-runtime-DrEy8kBO.d.ts +81 -0
  164. package/dist/query/client.d.mts +61 -0
  165. package/dist/query/client.d.ts +61 -0
  166. package/dist/query/index.d.mts +90 -0
  167. package/dist/query/index.d.ts +90 -0
  168. package/dist/query/parsers.d.mts +25 -0
  169. package/dist/query/parsers.d.ts +25 -0
  170. package/dist/query/server.d.mts +55 -0
  171. package/dist/query/server.d.ts +55 -0
  172. package/dist/request-B2PpOxYK.d.mts +6 -0
  173. package/dist/request-D40lt6aN.d.ts +6 -0
  174. package/dist/request.d.mts +26 -0
  175. package/dist/request.d.ts +26 -0
  176. package/dist/resolver-DJqjLMg_.d.mts +14 -0
  177. package/dist/resolver-IH4RmPEl.d.ts +14 -0
  178. package/dist/route-runtime-DoOHzCAD.d.mts +38 -0
  179. package/dist/route-runtime-DoOHzCAD.d.ts +38 -0
  180. package/dist/router.d.mts +36 -0
  181. package/dist/router.d.ts +36 -0
  182. package/dist/routes.d.mts +227 -0
  183. package/dist/routes.d.ts +227 -0
  184. package/dist/runtime-Bpp-c28k.d.ts +231 -0
  185. package/dist/runtime-Cxpq6xZN.d.mts +27 -0
  186. package/dist/runtime-Q3u74Nbq.d.mts +231 -0
  187. package/dist/runtime-bv63eUiO.d.ts +27 -0
  188. package/dist/server-action-security.d.mts +45 -0
  189. package/dist/server-action-security.d.ts +45 -0
  190. package/dist/server-fn-client.d.mts +33 -0
  191. package/dist/server-fn-client.d.ts +33 -0
  192. package/dist/server-fn-error-DDh14a0V.d.mts +26 -0
  193. package/dist/server-fn-error-DDh14a0V.d.ts +26 -0
  194. package/dist/server-fn.d.mts +121 -0
  195. package/dist/server-fn.d.ts +121 -0
  196. package/dist/server-plugins.d.mts +58 -0
  197. package/dist/server-plugins.d.ts +58 -0
  198. package/dist/server-query-client.d.mts +51 -0
  199. package/dist/server-query-client.d.ts +51 -0
  200. package/dist/server-query.d.mts +37 -0
  201. package/dist/server-query.d.ts +37 -0
  202. package/dist/server.cjs +285 -85
  203. package/dist/server.cjs.map +1 -1
  204. package/dist/server.d.mts +53 -0
  205. package/dist/server.d.ts +53 -0
  206. package/dist/server.mjs +26 -31
  207. package/dist/server.mjs.map +1 -1
  208. package/dist/storage.d.mts +52 -0
  209. package/dist/storage.d.ts +52 -0
  210. package/dist/testing.d.mts +104 -0
  211. package/dist/testing.d.ts +104 -0
  212. package/dist/theme/client.cjs +115 -0
  213. package/dist/theme/client.cjs.map +1 -0
  214. package/dist/theme/client.d.mts +17 -0
  215. package/dist/theme/client.d.ts +17 -0
  216. package/dist/theme/client.mjs +16 -0
  217. package/dist/theme/client.mjs.map +1 -0
  218. package/dist/theme/index.cjs +71 -0
  219. package/dist/theme/index.cjs.map +1 -0
  220. package/dist/theme/index.d.mts +6 -0
  221. package/dist/theme/index.d.ts +6 -0
  222. package/dist/theme/index.mjs +9 -0
  223. package/dist/theme/index.mjs.map +1 -0
  224. package/dist/theme/server.cjs +191 -0
  225. package/dist/theme/server.cjs.map +1 -0
  226. package/dist/theme/server.d.mts +8 -0
  227. package/dist/theme/server.d.ts +8 -0
  228. package/dist/theme/server.mjs +18 -0
  229. package/dist/theme/server.mjs.map +1 -0
  230. package/dist/transport-BmbGTXA5.d.mts +49 -0
  231. package/dist/transport-BmbGTXA5.d.ts +49 -0
  232. package/dist/types-BMxWr97v.d.mts +81 -0
  233. package/dist/types-BMxWr97v.d.ts +81 -0
  234. package/dist/types-CsR8fpgF.d.mts +30 -0
  235. package/dist/types-CsR8fpgF.d.ts +30 -0
  236. package/dist/types-D1A6-XvH.d.mts +73 -0
  237. package/dist/types-D1A6-XvH.d.ts +73 -0
  238. package/dist/types-DTzm4TCl.d.mts +78 -0
  239. package/dist/types-DTzm4TCl.d.ts +78 -0
  240. package/dist/utils-3sQgfkya.d.ts +23 -0
  241. package/dist/utils-Bop7bly-.d.mts +23 -0
  242. package/dist/version.cjs +1 -1
  243. package/dist/version.cjs.map +1 -1
  244. package/dist/version.d.mts +3 -0
  245. package/dist/version.d.ts +3 -0
  246. package/dist/version.mjs +1 -1
  247. package/dist/vite.cjs +285 -64
  248. package/dist/vite.cjs.map +1 -1
  249. package/dist/vite.d.mts +25 -0
  250. package/dist/vite.d.ts +25 -0
  251. package/dist/vite.mjs +13 -9
  252. package/dist/workflows-CusFV6mn.d.mts +153 -0
  253. package/dist/workflows-CusFV6mn.d.ts +153 -0
  254. package/dist/workflows.d.mts +1 -0
  255. package/dist/workflows.d.ts +1 -0
  256. package/package.json +25 -1
  257. package/dist/chunk-4EATUJFO.mjs.map +0 -1
  258. package/dist/chunk-CEVMYGDL.mjs.map +0 -1
  259. package/dist/chunk-FKKM7HVF.mjs.map +0 -1
  260. package/dist/chunk-FRPWCMMG.mjs.map +0 -1
  261. package/dist/chunk-I3UWA2P2.mjs.map +0 -1
  262. package/dist/chunk-MIUW47JX.mjs.map +0 -1
  263. package/dist/chunk-VIC7NJ77.mjs.map +0 -1
  264. /package/dist/{chunk-RIXKJPGI.mjs.map → chunk-42325TLU.mjs.map} +0 -0
  265. /package/dist/{chunk-LLPN5SEZ.mjs.map → chunk-DVPRBMU2.mjs.map} +0 -0
  266. /package/dist/{chunk-UCYWGN2P.mjs.map → chunk-OHNSROHS.mjs.map} +0 -0
@@ -0,0 +1,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 };
@@ -0,0 +1,81 @@
1
+ type FarmI18nRouting = "prefix-always" | "prefix-except-default" | "none";
2
+ type FarmI18nDetectionSignal = "url" | "cookie" | "accept-language";
3
+ type FarmI18nLocaleSource = FarmI18nDetectionSignal | "default" | "explicit";
4
+ type FarmI18nDirection = "ltr" | "rtl";
5
+ interface FarmI18nCookieConfig {
6
+ name?: string;
7
+ maxAge?: number;
8
+ path?: string;
9
+ sameSite?: "lax" | "strict" | "none";
10
+ secure?: boolean;
11
+ }
12
+ interface FarmI18nUserConfig {
13
+ locales: readonly string[];
14
+ defaultLocale: string;
15
+ /** Directory containing `<locale>.json`, or a path containing `{locale}`. */
16
+ messages?: string;
17
+ routing?: FarmI18nRouting;
18
+ detection?: false | readonly FarmI18nDetectionSignal[];
19
+ fallbackLocale?: string;
20
+ strict?: boolean;
21
+ cookie?: FarmI18nCookieConfig;
22
+ direction?: Partial<Record<string, FarmI18nDirection>>;
23
+ /** @deprecated Use `detection: false` to disable automatic detection. */
24
+ localeDetection?: boolean;
25
+ }
26
+ interface ResolvedFarmI18nCookieConfig {
27
+ name: string;
28
+ maxAge: number;
29
+ path: string;
30
+ sameSite: "lax" | "strict" | "none";
31
+ secure: boolean;
32
+ }
33
+ interface ResolvedFarmI18nConfig {
34
+ enabled: boolean;
35
+ locales: readonly string[];
36
+ defaultLocale: string;
37
+ messages: string;
38
+ routing: FarmI18nRouting;
39
+ detection: readonly FarmI18nDetectionSignal[];
40
+ fallbackLocale: string;
41
+ strict: boolean;
42
+ cookie: ResolvedFarmI18nCookieConfig;
43
+ direction: Readonly<Record<string, FarmI18nDirection>>;
44
+ }
45
+ type FarmI18nCatalog = Record<string, string>;
46
+ type FarmI18nCatalogs = Record<string, FarmI18nCatalog>;
47
+ interface FarmI18nClientSnapshot {
48
+ locale: string;
49
+ source: FarmI18nLocaleSource;
50
+ locales: readonly string[];
51
+ defaultLocale: string;
52
+ routing: FarmI18nRouting;
53
+ cookie: ResolvedFarmI18nCookieConfig;
54
+ direction: FarmI18nDirection;
55
+ messages: FarmI18nCatalog;
56
+ }
57
+ /** The generated `farm.d.ts` file augments this interface. */
58
+ interface FarmI18nMessageRegistry {
59
+ }
60
+ /** The generated `farm.d.ts` file augments this interface. */
61
+ interface FarmI18nLocaleRegistry {
62
+ }
63
+ type RegisteredMessageKey = Extract<keyof FarmI18nMessageRegistry, string>;
64
+ type RegisteredLocale = Extract<keyof FarmI18nLocaleRegistry, string>;
65
+ type FarmI18nMessageKey = [RegisteredMessageKey] extends [never] ? string : RegisteredMessageKey;
66
+ type FarmI18nLocale = [RegisteredLocale] extends [never] ? string : RegisteredLocale;
67
+ type FarmI18nMessageValues<TKey extends FarmI18nMessageKey> = TKey extends RegisteredMessageKey ? FarmI18nMessageRegistry[TKey] : Record<string, unknown>;
68
+ type FarmI18nMessageArgs<TKey extends FarmI18nMessageKey> = TKey extends RegisteredMessageKey ? keyof FarmI18nMessageRegistry[TKey] extends never ? [values?: FarmI18nMessageRegistry[TKey]] : [values: FarmI18nMessageRegistry[TKey]] : [values?: Record<string, unknown>];
69
+ interface FarmTranslator {
70
+ <TKey extends FarmI18nMessageKey>(key: TKey, ...args: FarmI18nMessageArgs<TKey>): string;
71
+ rich<TKey extends FarmI18nMessageKey>(key: TKey, ...args: FarmI18nMessageArgs<TKey>): unknown;
72
+ raw<TKey extends FarmI18nMessageKey>(key: TKey): string;
73
+ has(key: string): boolean;
74
+ }
75
+ declare global {
76
+ interface Window {
77
+ __FARM_I18N__?: FarmI18nClientSnapshot;
78
+ }
79
+ }
80
+
81
+ export type { FarmI18nCatalogs as F, ResolvedFarmI18nConfig as R, FarmI18nClientSnapshot as a, FarmI18nLocaleSource as b, FarmI18nLocale as c, FarmTranslator as d, FarmI18nMessageArgs as e, FarmI18nMessageKey as f, FarmI18nCookieConfig as g, FarmI18nDetectionSignal as h, FarmI18nDirection as i, FarmI18nRouting as j, FarmI18nUserConfig as k, FarmI18nCatalog as l, FarmI18nLocaleRegistry as m, FarmI18nMessageRegistry as n, FarmI18nMessageValues as o };
@@ -0,0 +1,81 @@
1
+ type FarmI18nRouting = "prefix-always" | "prefix-except-default" | "none";
2
+ type FarmI18nDetectionSignal = "url" | "cookie" | "accept-language";
3
+ type FarmI18nLocaleSource = FarmI18nDetectionSignal | "default" | "explicit";
4
+ type FarmI18nDirection = "ltr" | "rtl";
5
+ interface FarmI18nCookieConfig {
6
+ name?: string;
7
+ maxAge?: number;
8
+ path?: string;
9
+ sameSite?: "lax" | "strict" | "none";
10
+ secure?: boolean;
11
+ }
12
+ interface FarmI18nUserConfig {
13
+ locales: readonly string[];
14
+ defaultLocale: string;
15
+ /** Directory containing `<locale>.json`, or a path containing `{locale}`. */
16
+ messages?: string;
17
+ routing?: FarmI18nRouting;
18
+ detection?: false | readonly FarmI18nDetectionSignal[];
19
+ fallbackLocale?: string;
20
+ strict?: boolean;
21
+ cookie?: FarmI18nCookieConfig;
22
+ direction?: Partial<Record<string, FarmI18nDirection>>;
23
+ /** @deprecated Use `detection: false` to disable automatic detection. */
24
+ localeDetection?: boolean;
25
+ }
26
+ interface ResolvedFarmI18nCookieConfig {
27
+ name: string;
28
+ maxAge: number;
29
+ path: string;
30
+ sameSite: "lax" | "strict" | "none";
31
+ secure: boolean;
32
+ }
33
+ interface ResolvedFarmI18nConfig {
34
+ enabled: boolean;
35
+ locales: readonly string[];
36
+ defaultLocale: string;
37
+ messages: string;
38
+ routing: FarmI18nRouting;
39
+ detection: readonly FarmI18nDetectionSignal[];
40
+ fallbackLocale: string;
41
+ strict: boolean;
42
+ cookie: ResolvedFarmI18nCookieConfig;
43
+ direction: Readonly<Record<string, FarmI18nDirection>>;
44
+ }
45
+ type FarmI18nCatalog = Record<string, string>;
46
+ type FarmI18nCatalogs = Record<string, FarmI18nCatalog>;
47
+ interface FarmI18nClientSnapshot {
48
+ locale: string;
49
+ source: FarmI18nLocaleSource;
50
+ locales: readonly string[];
51
+ defaultLocale: string;
52
+ routing: FarmI18nRouting;
53
+ cookie: ResolvedFarmI18nCookieConfig;
54
+ direction: FarmI18nDirection;
55
+ messages: FarmI18nCatalog;
56
+ }
57
+ /** The generated `farm.d.ts` file augments this interface. */
58
+ interface FarmI18nMessageRegistry {
59
+ }
60
+ /** The generated `farm.d.ts` file augments this interface. */
61
+ interface FarmI18nLocaleRegistry {
62
+ }
63
+ type RegisteredMessageKey = Extract<keyof FarmI18nMessageRegistry, string>;
64
+ type RegisteredLocale = Extract<keyof FarmI18nLocaleRegistry, string>;
65
+ type FarmI18nMessageKey = [RegisteredMessageKey] extends [never] ? string : RegisteredMessageKey;
66
+ type FarmI18nLocale = [RegisteredLocale] extends [never] ? string : RegisteredLocale;
67
+ type FarmI18nMessageValues<TKey extends FarmI18nMessageKey> = TKey extends RegisteredMessageKey ? FarmI18nMessageRegistry[TKey] : Record<string, unknown>;
68
+ type FarmI18nMessageArgs<TKey extends FarmI18nMessageKey> = TKey extends RegisteredMessageKey ? keyof FarmI18nMessageRegistry[TKey] extends never ? [values?: FarmI18nMessageRegistry[TKey]] : [values: FarmI18nMessageRegistry[TKey]] : [values?: Record<string, unknown>];
69
+ interface FarmTranslator {
70
+ <TKey extends FarmI18nMessageKey>(key: TKey, ...args: FarmI18nMessageArgs<TKey>): string;
71
+ rich<TKey extends FarmI18nMessageKey>(key: TKey, ...args: FarmI18nMessageArgs<TKey>): unknown;
72
+ raw<TKey extends FarmI18nMessageKey>(key: TKey): string;
73
+ has(key: string): boolean;
74
+ }
75
+ declare global {
76
+ interface Window {
77
+ __FARM_I18N__?: FarmI18nClientSnapshot;
78
+ }
79
+ }
80
+
81
+ export type { FarmI18nCatalogs as F, ResolvedFarmI18nConfig as R, FarmI18nClientSnapshot as a, FarmI18nLocaleSource as b, FarmI18nLocale as c, FarmTranslator as d, FarmI18nMessageArgs as e, FarmI18nMessageKey as f, FarmI18nCookieConfig as g, FarmI18nDetectionSignal as h, FarmI18nDirection as i, FarmI18nRouting as j, FarmI18nUserConfig as k, FarmI18nCatalog as l, FarmI18nLocaleRegistry as m, FarmI18nMessageRegistry as n, FarmI18nMessageValues as o };
@@ -0,0 +1,30 @@
1
+ type FarmThemePreference = "light" | "dark" | "system";
2
+ type FarmResolvedTheme = Exclude<FarmThemePreference, "system">;
3
+ interface FarmThemeConfig {
4
+ /** Initial preference when the visitor has not selected one. @default "system" */
5
+ default?: FarmThemePreference;
6
+ /** Cookie and cross-tab storage key. @default "farm-theme" */
7
+ storageKey?: string;
8
+ }
9
+ interface ResolvedFarmThemeConfig {
10
+ enabled: boolean;
11
+ default: FarmThemePreference;
12
+ storageKey: string;
13
+ cookiePath: string;
14
+ }
15
+ interface FarmThemeSnapshot {
16
+ /** Saved visitor preference. */
17
+ theme: FarmThemePreference;
18
+ /** Active browser color mode. Undefined during SSR when the preference is `system`. */
19
+ resolvedTheme: FarmResolvedTheme | undefined;
20
+ /** Whether the browser runtime has resolved the theme. */
21
+ mounted: boolean;
22
+ }
23
+ interface FarmThemeRuntime {
24
+ config: ResolvedFarmThemeConfig;
25
+ serverSnapshot: FarmThemeSnapshot;
26
+ snapshot: FarmThemeSnapshot;
27
+ setTheme(theme: FarmThemePreference): void;
28
+ }
29
+
30
+ export type { FarmThemeRuntime as F, ResolvedFarmThemeConfig as R, FarmThemeSnapshot as a, FarmThemePreference as b, FarmResolvedTheme as c, FarmThemeConfig as d };
@@ -0,0 +1,30 @@
1
+ type FarmThemePreference = "light" | "dark" | "system";
2
+ type FarmResolvedTheme = Exclude<FarmThemePreference, "system">;
3
+ interface FarmThemeConfig {
4
+ /** Initial preference when the visitor has not selected one. @default "system" */
5
+ default?: FarmThemePreference;
6
+ /** Cookie and cross-tab storage key. @default "farm-theme" */
7
+ storageKey?: string;
8
+ }
9
+ interface ResolvedFarmThemeConfig {
10
+ enabled: boolean;
11
+ default: FarmThemePreference;
12
+ storageKey: string;
13
+ cookiePath: string;
14
+ }
15
+ interface FarmThemeSnapshot {
16
+ /** Saved visitor preference. */
17
+ theme: FarmThemePreference;
18
+ /** Active browser color mode. Undefined during SSR when the preference is `system`. */
19
+ resolvedTheme: FarmResolvedTheme | undefined;
20
+ /** Whether the browser runtime has resolved the theme. */
21
+ mounted: boolean;
22
+ }
23
+ interface FarmThemeRuntime {
24
+ config: ResolvedFarmThemeConfig;
25
+ serverSnapshot: FarmThemeSnapshot;
26
+ snapshot: FarmThemeSnapshot;
27
+ setTheme(theme: FarmThemePreference): void;
28
+ }
29
+
30
+ export type { FarmThemeRuntime as F, ResolvedFarmThemeConfig as R, FarmThemeSnapshot as a, FarmThemePreference as b, FarmResolvedTheme as c, FarmThemeConfig as d };
@@ -0,0 +1,73 @@
1
+ import { ConnectorOptions } from 'db0';
2
+ import { BuiltinDriverOptions, BuiltinDriverName, Driver, Storage } from 'unstorage';
3
+
4
+ type ObjectShape<T> = T extends object ? T : Record<string, never>;
5
+ type FarmStorageBuiltinDriverWithoutDB0 = Exclude<Extract<BuiltinDriverName, keyof BuiltinDriverOptions>, "db0">;
6
+ type FarmStorageBuiltinDriverConfigMap = {
7
+ [K in FarmStorageBuiltinDriverWithoutDB0]: {
8
+ driver: K;
9
+ options?: BuiltinDriverOptions[K];
10
+ } & Partial<ObjectShape<BuiltinDriverOptions[K]>>;
11
+ };
12
+ type FarmStorageDatabaseDriverMap = {
13
+ sqlite: "node-sqlite";
14
+ "node-sqlite": "node-sqlite";
15
+ sqlite3: "sqlite3";
16
+ "better-sqlite3": "better-sqlite3";
17
+ postgres: "postgresql";
18
+ postgresql: "postgresql";
19
+ pg: "postgresql";
20
+ mysql: "mysql2";
21
+ mysql2: "mysql2";
22
+ pglite: "pglite";
23
+ planetscale: "planetscale";
24
+ libsql: "libsql";
25
+ "libsql-node": "libsql-node";
26
+ "libsql-http": "libsql-http";
27
+ };
28
+ type FarmStorageDatabaseDriverName = keyof FarmStorageDatabaseDriverMap;
29
+ type FarmStorageDatabaseConfigMap = {
30
+ [K in FarmStorageDatabaseDriverName]: {
31
+ driver: K;
32
+ options?: ConnectorOptions[FarmStorageDatabaseDriverMap[K]];
33
+ tableName?: string;
34
+ } & Partial<ObjectShape<ConnectorOptions[FarmStorageDatabaseDriverMap[K]]>>;
35
+ };
36
+ type FarmStorageMemoryDriverConfig = {
37
+ driver?: "memory";
38
+ };
39
+ type FarmStorageLocalDriverConfig = {
40
+ driver: "local";
41
+ options?: BuiltinDriverOptions["fs-lite"];
42
+ } & Partial<ObjectShape<BuiltinDriverOptions["fs-lite"]>>;
43
+ type FarmStorageDB0DriverConfig = {
44
+ driver: "db0";
45
+ options: BuiltinDriverOptions["db0"];
46
+ };
47
+ type FarmStorageBuiltinDriverConfig = FarmStorageMemoryDriverConfig | FarmStorageLocalDriverConfig | FarmStorageDB0DriverConfig | FarmStorageBuiltinDriverConfigMap[FarmStorageBuiltinDriverWithoutDB0];
48
+ interface FarmStorageClient extends Storage {
49
+ readonly kind: "farm-storage-client";
50
+ ready(): Promise<Storage>;
51
+ createStorage(): Promise<Storage>;
52
+ resolveDriver(): Promise<Driver>;
53
+ }
54
+ type FarmStorageRuntimeClient = object | (() => unknown | Promise<unknown>);
55
+ interface FarmStorageCustomDriverConfig {
56
+ driver: Driver | (() => Driver | Promise<Driver>);
57
+ }
58
+ type FarmStorageDatabaseConfig = FarmStorageDatabaseConfigMap[FarmStorageDatabaseDriverName];
59
+ type FarmStorageClientConfig = FarmStorageBuiltinDriverConfig | FarmStorageDatabaseConfig | FarmStorageCustomDriverConfig;
60
+ type FarmStorageMountConfig = FarmStorageClientConfig | FarmStorageClient;
61
+ type FarmStorageMounts = Record<string, FarmStorageMountConfig>;
62
+ type FarmStorageConfigObject = FarmStorageClientConfig & {
63
+ /**
64
+ * Existing FarmStorageClient instances still drive Farm's key/value storage.
65
+ * Other objects/functions are treated as application runtime clients for
66
+ * schema-backed integration persistence via @farming-labs/orm.
67
+ */
68
+ client?: FarmStorageClient | FarmStorageRuntimeClient;
69
+ mounts?: FarmStorageMounts;
70
+ };
71
+ type FarmStorageUserConfig = FarmStorageConfigObject | FarmStorageClient;
72
+
73
+ export type { FarmStorageBuiltinDriverConfig as F, FarmStorageClient as a, FarmStorageClientConfig as b, FarmStorageConfigObject as c, FarmStorageCustomDriverConfig as d, FarmStorageDatabaseConfig as e, FarmStorageDatabaseDriverName as f, FarmStorageLocalDriverConfig as g, FarmStorageRuntimeClient as h, FarmStorageMountConfig as i, FarmStorageMounts as j, FarmStorageUserConfig as k };
@@ -0,0 +1,73 @@
1
+ import { ConnectorOptions } from 'db0';
2
+ import { BuiltinDriverOptions, BuiltinDriverName, Driver, Storage } from 'unstorage';
3
+
4
+ type ObjectShape<T> = T extends object ? T : Record<string, never>;
5
+ type FarmStorageBuiltinDriverWithoutDB0 = Exclude<Extract<BuiltinDriverName, keyof BuiltinDriverOptions>, "db0">;
6
+ type FarmStorageBuiltinDriverConfigMap = {
7
+ [K in FarmStorageBuiltinDriverWithoutDB0]: {
8
+ driver: K;
9
+ options?: BuiltinDriverOptions[K];
10
+ } & Partial<ObjectShape<BuiltinDriverOptions[K]>>;
11
+ };
12
+ type FarmStorageDatabaseDriverMap = {
13
+ sqlite: "node-sqlite";
14
+ "node-sqlite": "node-sqlite";
15
+ sqlite3: "sqlite3";
16
+ "better-sqlite3": "better-sqlite3";
17
+ postgres: "postgresql";
18
+ postgresql: "postgresql";
19
+ pg: "postgresql";
20
+ mysql: "mysql2";
21
+ mysql2: "mysql2";
22
+ pglite: "pglite";
23
+ planetscale: "planetscale";
24
+ libsql: "libsql";
25
+ "libsql-node": "libsql-node";
26
+ "libsql-http": "libsql-http";
27
+ };
28
+ type FarmStorageDatabaseDriverName = keyof FarmStorageDatabaseDriverMap;
29
+ type FarmStorageDatabaseConfigMap = {
30
+ [K in FarmStorageDatabaseDriverName]: {
31
+ driver: K;
32
+ options?: ConnectorOptions[FarmStorageDatabaseDriverMap[K]];
33
+ tableName?: string;
34
+ } & Partial<ObjectShape<ConnectorOptions[FarmStorageDatabaseDriverMap[K]]>>;
35
+ };
36
+ type FarmStorageMemoryDriverConfig = {
37
+ driver?: "memory";
38
+ };
39
+ type FarmStorageLocalDriverConfig = {
40
+ driver: "local";
41
+ options?: BuiltinDriverOptions["fs-lite"];
42
+ } & Partial<ObjectShape<BuiltinDriverOptions["fs-lite"]>>;
43
+ type FarmStorageDB0DriverConfig = {
44
+ driver: "db0";
45
+ options: BuiltinDriverOptions["db0"];
46
+ };
47
+ type FarmStorageBuiltinDriverConfig = FarmStorageMemoryDriverConfig | FarmStorageLocalDriverConfig | FarmStorageDB0DriverConfig | FarmStorageBuiltinDriverConfigMap[FarmStorageBuiltinDriverWithoutDB0];
48
+ interface FarmStorageClient extends Storage {
49
+ readonly kind: "farm-storage-client";
50
+ ready(): Promise<Storage>;
51
+ createStorage(): Promise<Storage>;
52
+ resolveDriver(): Promise<Driver>;
53
+ }
54
+ type FarmStorageRuntimeClient = object | (() => unknown | Promise<unknown>);
55
+ interface FarmStorageCustomDriverConfig {
56
+ driver: Driver | (() => Driver | Promise<Driver>);
57
+ }
58
+ type FarmStorageDatabaseConfig = FarmStorageDatabaseConfigMap[FarmStorageDatabaseDriverName];
59
+ type FarmStorageClientConfig = FarmStorageBuiltinDriverConfig | FarmStorageDatabaseConfig | FarmStorageCustomDriverConfig;
60
+ type FarmStorageMountConfig = FarmStorageClientConfig | FarmStorageClient;
61
+ type FarmStorageMounts = Record<string, FarmStorageMountConfig>;
62
+ type FarmStorageConfigObject = FarmStorageClientConfig & {
63
+ /**
64
+ * Existing FarmStorageClient instances still drive Farm's key/value storage.
65
+ * Other objects/functions are treated as application runtime clients for
66
+ * schema-backed integration persistence via @farming-labs/orm.
67
+ */
68
+ client?: FarmStorageClient | FarmStorageRuntimeClient;
69
+ mounts?: FarmStorageMounts;
70
+ };
71
+ type FarmStorageUserConfig = FarmStorageConfigObject | FarmStorageClient;
72
+
73
+ export type { FarmStorageBuiltinDriverConfig as F, FarmStorageClient as a, FarmStorageClientConfig as b, FarmStorageConfigObject as c, FarmStorageCustomDriverConfig as d, FarmStorageDatabaseConfig as e, FarmStorageDatabaseDriverName as f, FarmStorageLocalDriverConfig as g, FarmStorageRuntimeClient as h, FarmStorageMountConfig as i, FarmStorageMounts as j, FarmStorageUserConfig as k };
@@ -0,0 +1,78 @@
1
+ import { DocsConfig } from '@farming-labs/docs';
2
+
3
+ interface FarmDocsSidebarItem {
4
+ label?: string;
5
+ title?: string;
6
+ slug?: string;
7
+ href?: string;
8
+ icon?: string;
9
+ children?: FarmDocsSidebarItem[];
10
+ items?: FarmDocsSidebarItem[];
11
+ }
12
+ interface FarmDocsNavigationConfig {
13
+ sidebar?: FarmDocsSidebarItem[];
14
+ }
15
+ interface FarmDocsSocialImageConfig {
16
+ /** Generate a page-specific 1200×630 social image. Defaults to true. */
17
+ enabled?: boolean;
18
+ /** Absolute public origin used in social metadata, e.g. https://example.com. */
19
+ baseUrl?: string;
20
+ /** Site name shown in Open Graph metadata. Defaults to the docs navigation title. */
21
+ siteName?: string;
22
+ /** Short brand label drawn in the image header. Defaults to siteName. */
23
+ brand?: string;
24
+ /** Optional WOFF2 URLs or data URLs embedded into the generated SVG. */
25
+ fonts?: FarmDocsSocialImageFonts;
26
+ }
27
+ interface FarmDocsSocialImageFonts {
28
+ /** Display face used for page titles. */
29
+ display?: string;
30
+ /** Sans-serif face used for descriptions. */
31
+ sans?: string;
32
+ /** Monospace face used for labels, routes, and diagrams. */
33
+ mono?: string;
34
+ }
35
+ type FarmDocsRuntimeConfig = Partial<DocsConfig> & {
36
+ /**
37
+ * Public favicon URL used by the standalone docs renderer.
38
+ * Set this explicitly when docs should share the host application's icon.
39
+ */
40
+ favicon?: string;
41
+ /**
42
+ * Optional serializable navigation tree used by Farm's docs runtime.
43
+ * Icon values reference keys from `icons`.
44
+ */
45
+ navigation?: FarmDocsNavigationConfig;
46
+ /**
47
+ * Automatic page-specific Open Graph and X images for Markdown docs.
48
+ * Enabled by default. Set false to opt out for the complete docs tree.
49
+ */
50
+ socialImage?: boolean | FarmDocsSocialImageConfig;
51
+ };
52
+ type FarmDocsConfigInput = FarmDocsRuntimeConfig & {
53
+ /**
54
+ * Farm public route for docs, e.g. "/docs". When passed through
55
+ * `config`, this is converted to the docs package's folder-style `entry`.
56
+ */
57
+ entry?: string;
58
+ /** Explicit public route prefix. Defaults to `entry`. */
59
+ docsPath?: string;
60
+ /** Source content directory, relative to the project root. */
61
+ contentDir?: string;
62
+ /** Set to false to opt out even when a docs config file exists. */
63
+ enabled?: boolean;
64
+ /** Inline @farming-labs/docs config object. */
65
+ config?: FarmDocsRuntimeConfig;
66
+ /** Path to docs.config.* or docs.json. */
67
+ configPath?: string;
68
+ };
69
+ type FarmDocsUserConfig = boolean | FarmDocsConfigInput;
70
+ interface FarmDocsResolvedConfig {
71
+ enabled: boolean;
72
+ entry: string;
73
+ contentDir?: string;
74
+ configPath?: string;
75
+ config: FarmDocsRuntimeConfig & Pick<DocsConfig, "entry">;
76
+ }
77
+
78
+ export type { FarmDocsResolvedConfig as F, FarmDocsUserConfig as a, FarmDocsConfigInput as b, FarmDocsNavigationConfig as c, FarmDocsSocialImageConfig as d, FarmDocsSocialImageFonts as e, FarmDocsSidebarItem as f };
@@ -0,0 +1,78 @@
1
+ import { DocsConfig } from '@farming-labs/docs';
2
+
3
+ interface FarmDocsSidebarItem {
4
+ label?: string;
5
+ title?: string;
6
+ slug?: string;
7
+ href?: string;
8
+ icon?: string;
9
+ children?: FarmDocsSidebarItem[];
10
+ items?: FarmDocsSidebarItem[];
11
+ }
12
+ interface FarmDocsNavigationConfig {
13
+ sidebar?: FarmDocsSidebarItem[];
14
+ }
15
+ interface FarmDocsSocialImageConfig {
16
+ /** Generate a page-specific 1200×630 social image. Defaults to true. */
17
+ enabled?: boolean;
18
+ /** Absolute public origin used in social metadata, e.g. https://example.com. */
19
+ baseUrl?: string;
20
+ /** Site name shown in Open Graph metadata. Defaults to the docs navigation title. */
21
+ siteName?: string;
22
+ /** Short brand label drawn in the image header. Defaults to siteName. */
23
+ brand?: string;
24
+ /** Optional WOFF2 URLs or data URLs embedded into the generated SVG. */
25
+ fonts?: FarmDocsSocialImageFonts;
26
+ }
27
+ interface FarmDocsSocialImageFonts {
28
+ /** Display face used for page titles. */
29
+ display?: string;
30
+ /** Sans-serif face used for descriptions. */
31
+ sans?: string;
32
+ /** Monospace face used for labels, routes, and diagrams. */
33
+ mono?: string;
34
+ }
35
+ type FarmDocsRuntimeConfig = Partial<DocsConfig> & {
36
+ /**
37
+ * Public favicon URL used by the standalone docs renderer.
38
+ * Set this explicitly when docs should share the host application's icon.
39
+ */
40
+ favicon?: string;
41
+ /**
42
+ * Optional serializable navigation tree used by Farm's docs runtime.
43
+ * Icon values reference keys from `icons`.
44
+ */
45
+ navigation?: FarmDocsNavigationConfig;
46
+ /**
47
+ * Automatic page-specific Open Graph and X images for Markdown docs.
48
+ * Enabled by default. Set false to opt out for the complete docs tree.
49
+ */
50
+ socialImage?: boolean | FarmDocsSocialImageConfig;
51
+ };
52
+ type FarmDocsConfigInput = FarmDocsRuntimeConfig & {
53
+ /**
54
+ * Farm public route for docs, e.g. "/docs". When passed through
55
+ * `config`, this is converted to the docs package's folder-style `entry`.
56
+ */
57
+ entry?: string;
58
+ /** Explicit public route prefix. Defaults to `entry`. */
59
+ docsPath?: string;
60
+ /** Source content directory, relative to the project root. */
61
+ contentDir?: string;
62
+ /** Set to false to opt out even when a docs config file exists. */
63
+ enabled?: boolean;
64
+ /** Inline @farming-labs/docs config object. */
65
+ config?: FarmDocsRuntimeConfig;
66
+ /** Path to docs.config.* or docs.json. */
67
+ configPath?: string;
68
+ };
69
+ type FarmDocsUserConfig = boolean | FarmDocsConfigInput;
70
+ interface FarmDocsResolvedConfig {
71
+ enabled: boolean;
72
+ entry: string;
73
+ contentDir?: string;
74
+ configPath?: string;
75
+ config: FarmDocsRuntimeConfig & Pick<DocsConfig, "entry">;
76
+ }
77
+
78
+ export type { FarmDocsResolvedConfig as F, FarmDocsUserConfig as a, FarmDocsConfigInput as b, FarmDocsNavigationConfig as c, FarmDocsSocialImageConfig as d, FarmDocsSocialImageFonts as e, FarmDocsSidebarItem as f };
@@ -0,0 +1,23 @@
1
+ import { C as ParsedRoute, B as RouteSegment } from './client-plugins-DuuleQKk.js';
2
+
3
+ declare function parseRoutePath(filePath: string): ParsedRoute;
4
+ declare function segmentsToPattern(segments: RouteSegment[]): string;
5
+ declare function matchRoute(url: string, segments: RouteSegment[]): {
6
+ params: Record<string, string>;
7
+ matches: boolean;
8
+ };
9
+ declare function resolveAppPath(root: string, ...paths: string[]): string;
10
+ declare function toViteModuleId(filePath: string, root: string): string;
11
+ declare function fileExists(filePath: string): Promise<boolean>;
12
+ declare function globFiles(pattern: string, cwd: string): Promise<string[]>;
13
+ declare function parseSearchParams(searchParams: URLSearchParams): Record<string, string | string[]>;
14
+ declare const logger: {
15
+ info: (message: string) => void;
16
+ success: (message: string) => void;
17
+ warn: (message: string) => void;
18
+ error: (message: string) => void;
19
+ ready: (message: string) => void;
20
+ event: (message: string) => void;
21
+ };
22
+
23
+ export { parseSearchParams as a, fileExists as f, globFiles as g, logger as l, matchRoute as m, parseRoutePath as p, resolveAppPath as r, segmentsToPattern as s, toViteModuleId as t };