@farm.js/core 0.1.0-beta.0

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 (549) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +11 -0
  3. package/dist/after.cjs +227 -0
  4. package/dist/after.cjs.map +1 -0
  5. package/dist/after.d.mts +25 -0
  6. package/dist/after.d.ts +25 -0
  7. package/dist/after.mjs +14 -0
  8. package/dist/after.mjs.map +1 -0
  9. package/dist/agent-runtime.cjs +2379 -0
  10. package/dist/agent-runtime.cjs.map +1 -0
  11. package/dist/agent-runtime.d.mts +93 -0
  12. package/dist/agent-runtime.d.ts +93 -0
  13. package/dist/agent-runtime.mjs +479 -0
  14. package/dist/agent-runtime.mjs.map +1 -0
  15. package/dist/api/route-manager.cjs +1196 -0
  16. package/dist/api/route-manager.cjs.map +1 -0
  17. package/dist/api/route-manager.d.mts +64 -0
  18. package/dist/api/route-manager.d.ts +64 -0
  19. package/dist/api/route-manager.mjs +34 -0
  20. package/dist/api/route-manager.mjs.map +1 -0
  21. package/dist/api/runtime.cjs +272 -0
  22. package/dist/api/runtime.cjs.map +1 -0
  23. package/dist/api/runtime.d.mts +16 -0
  24. package/dist/api/runtime.d.ts +16 -0
  25. package/dist/api/runtime.mjs +16 -0
  26. package/dist/api/runtime.mjs.map +1 -0
  27. package/dist/api.cjs +3199 -0
  28. package/dist/api.cjs.map +1 -0
  29. package/dist/api.d.mts +190 -0
  30. package/dist/api.d.ts +190 -0
  31. package/dist/api.mjs +63 -0
  32. package/dist/api.mjs.map +1 -0
  33. package/dist/app-BiX4qb-d.d.mts +265 -0
  34. package/dist/app-CFRNJXP1.d.ts +265 -0
  35. package/dist/app-markdown.cjs +220 -0
  36. package/dist/app-markdown.cjs.map +1 -0
  37. package/dist/app-markdown.d.mts +21 -0
  38. package/dist/app-markdown.d.ts +21 -0
  39. package/dist/app-markdown.mjs +26 -0
  40. package/dist/app-markdown.mjs.map +1 -0
  41. package/dist/cache.cjs +543 -0
  42. package/dist/cache.cjs.map +1 -0
  43. package/dist/cache.d.mts +78 -0
  44. package/dist/cache.d.ts +78 -0
  45. package/dist/cache.mjs +38 -0
  46. package/dist/cache.mjs.map +1 -0
  47. package/dist/chunk-25D7G34K.mjs +142 -0
  48. package/dist/chunk-25D7G34K.mjs.map +1 -0
  49. package/dist/chunk-3QJO55ZF.mjs +3548 -0
  50. package/dist/chunk-3QJO55ZF.mjs.map +1 -0
  51. package/dist/chunk-3XNTL3FQ.mjs +452 -0
  52. package/dist/chunk-3XNTL3FQ.mjs.map +1 -0
  53. package/dist/chunk-44ZCFSKE.mjs +84 -0
  54. package/dist/chunk-44ZCFSKE.mjs.map +1 -0
  55. package/dist/chunk-4PTK6KT4.mjs +364 -0
  56. package/dist/chunk-4PTK6KT4.mjs.map +1 -0
  57. package/dist/chunk-4S3ORGFA.mjs +44 -0
  58. package/dist/chunk-4S3ORGFA.mjs.map +1 -0
  59. package/dist/chunk-5BY76U2M.mjs +1 -0
  60. package/dist/chunk-5BY76U2M.mjs.map +1 -0
  61. package/dist/chunk-5ZGPRGWV.mjs +136 -0
  62. package/dist/chunk-5ZGPRGWV.mjs.map +1 -0
  63. package/dist/chunk-6XDUHOEM.mjs +157 -0
  64. package/dist/chunk-6XDUHOEM.mjs.map +1 -0
  65. package/dist/chunk-74YTBPTY.mjs +450 -0
  66. package/dist/chunk-74YTBPTY.mjs.map +1 -0
  67. package/dist/chunk-7HO6AEOP.mjs +74 -0
  68. package/dist/chunk-7HO6AEOP.mjs.map +1 -0
  69. package/dist/chunk-7MABZJIM.mjs +29 -0
  70. package/dist/chunk-7MABZJIM.mjs.map +1 -0
  71. package/dist/chunk-7ZY5AIJO.mjs +161 -0
  72. package/dist/chunk-7ZY5AIJO.mjs.map +1 -0
  73. package/dist/chunk-AGS7UJ52.mjs +446 -0
  74. package/dist/chunk-AGS7UJ52.mjs.map +1 -0
  75. package/dist/chunk-AZ7YUVNR.mjs +65 -0
  76. package/dist/chunk-AZ7YUVNR.mjs.map +1 -0
  77. package/dist/chunk-B232I2GP.mjs +163 -0
  78. package/dist/chunk-B232I2GP.mjs.map +1 -0
  79. package/dist/chunk-B6N4ZB2H.mjs +718 -0
  80. package/dist/chunk-B6N4ZB2H.mjs.map +1 -0
  81. package/dist/chunk-BHG3LVHH.mjs +176 -0
  82. package/dist/chunk-BHG3LVHH.mjs.map +1 -0
  83. package/dist/chunk-C3DLZMBU.mjs +597 -0
  84. package/dist/chunk-C3DLZMBU.mjs.map +1 -0
  85. package/dist/chunk-CGILA3WO.mjs +14 -0
  86. package/dist/chunk-CGILA3WO.mjs.map +1 -0
  87. package/dist/chunk-CHFHNEMO.mjs +7088 -0
  88. package/dist/chunk-CHFHNEMO.mjs.map +1 -0
  89. package/dist/chunk-E2MPIBRE.mjs +149 -0
  90. package/dist/chunk-E2MPIBRE.mjs.map +1 -0
  91. package/dist/chunk-E6EPN5BT.mjs +203 -0
  92. package/dist/chunk-E6EPN5BT.mjs.map +1 -0
  93. package/dist/chunk-EVGBEZDF.mjs +215 -0
  94. package/dist/chunk-EVGBEZDF.mjs.map +1 -0
  95. package/dist/chunk-FQYDHKKU.mjs +128 -0
  96. package/dist/chunk-FQYDHKKU.mjs.map +1 -0
  97. package/dist/chunk-G3B5BRDY.mjs +5763 -0
  98. package/dist/chunk-G3B5BRDY.mjs.map +1 -0
  99. package/dist/chunk-GN72QAIH.mjs +146 -0
  100. package/dist/chunk-GN72QAIH.mjs.map +1 -0
  101. package/dist/chunk-GS6K5OCM.mjs +407 -0
  102. package/dist/chunk-GS6K5OCM.mjs.map +1 -0
  103. package/dist/chunk-GY2STC2S.mjs +180 -0
  104. package/dist/chunk-GY2STC2S.mjs.map +1 -0
  105. package/dist/chunk-GZP5W4K3.mjs +158 -0
  106. package/dist/chunk-GZP5W4K3.mjs.map +1 -0
  107. package/dist/chunk-H2FA2SBS.mjs +51 -0
  108. package/dist/chunk-H2FA2SBS.mjs.map +1 -0
  109. package/dist/chunk-HXP3ZSPC.mjs +211 -0
  110. package/dist/chunk-HXP3ZSPC.mjs.map +1 -0
  111. package/dist/chunk-ITN462YM.mjs +98 -0
  112. package/dist/chunk-ITN462YM.mjs.map +1 -0
  113. package/dist/chunk-J23HNLFY.mjs +72 -0
  114. package/dist/chunk-J23HNLFY.mjs.map +1 -0
  115. package/dist/chunk-J4FNJ5IU.mjs +179 -0
  116. package/dist/chunk-J4FNJ5IU.mjs.map +1 -0
  117. package/dist/chunk-JK25YEN6.mjs +219 -0
  118. package/dist/chunk-JK25YEN6.mjs.map +1 -0
  119. package/dist/chunk-JLWMCADZ.mjs +204 -0
  120. package/dist/chunk-JLWMCADZ.mjs.map +1 -0
  121. package/dist/chunk-JN3UU635.mjs +622 -0
  122. package/dist/chunk-JN3UU635.mjs.map +1 -0
  123. package/dist/chunk-K4667E2Q.mjs +1916 -0
  124. package/dist/chunk-K4667E2Q.mjs.map +1 -0
  125. package/dist/chunk-LGHEOHBU.mjs +218 -0
  126. package/dist/chunk-LGHEOHBU.mjs.map +1 -0
  127. package/dist/chunk-LLC7BNXW.mjs +275 -0
  128. package/dist/chunk-LLC7BNXW.mjs.map +1 -0
  129. package/dist/chunk-LM2YNO4U.mjs +24 -0
  130. package/dist/chunk-LM2YNO4U.mjs.map +1 -0
  131. package/dist/chunk-NNLCAVB6.mjs +391 -0
  132. package/dist/chunk-NNLCAVB6.mjs.map +1 -0
  133. package/dist/chunk-O3HADRW6.mjs +639 -0
  134. package/dist/chunk-O3HADRW6.mjs.map +1 -0
  135. package/dist/chunk-OYXO65LI.mjs +119 -0
  136. package/dist/chunk-OYXO65LI.mjs.map +1 -0
  137. package/dist/chunk-P7QDS5AT.mjs +191 -0
  138. package/dist/chunk-P7QDS5AT.mjs.map +1 -0
  139. package/dist/chunk-PRNYWD7K.mjs +599 -0
  140. package/dist/chunk-PRNYWD7K.mjs.map +1 -0
  141. package/dist/chunk-QF4PHCMA.mjs +422 -0
  142. package/dist/chunk-QF4PHCMA.mjs.map +1 -0
  143. package/dist/chunk-QFQRHRZS.mjs +1224 -0
  144. package/dist/chunk-QFQRHRZS.mjs.map +1 -0
  145. package/dist/chunk-QGOHVJ6J.mjs +63 -0
  146. package/dist/chunk-QGOHVJ6J.mjs.map +1 -0
  147. package/dist/chunk-QKVUNGAH.mjs +39 -0
  148. package/dist/chunk-QKVUNGAH.mjs.map +1 -0
  149. package/dist/chunk-QM6VV26B.mjs +149 -0
  150. package/dist/chunk-QM6VV26B.mjs.map +1 -0
  151. package/dist/chunk-RHIFZZUI.mjs +69 -0
  152. package/dist/chunk-RHIFZZUI.mjs.map +1 -0
  153. package/dist/chunk-RKI6TN3A.mjs +49 -0
  154. package/dist/chunk-RKI6TN3A.mjs.map +1 -0
  155. package/dist/chunk-RSKVYESE.mjs +187 -0
  156. package/dist/chunk-RSKVYESE.mjs.map +1 -0
  157. package/dist/chunk-S2XHZS7W.mjs +180 -0
  158. package/dist/chunk-S2XHZS7W.mjs.map +1 -0
  159. package/dist/chunk-SCFX4UTD.mjs +28 -0
  160. package/dist/chunk-SCFX4UTD.mjs.map +1 -0
  161. package/dist/chunk-SL6HTIOK.mjs +66 -0
  162. package/dist/chunk-SL6HTIOK.mjs.map +1 -0
  163. package/dist/chunk-SOU3Q3ZA.mjs +173 -0
  164. package/dist/chunk-SOU3Q3ZA.mjs.map +1 -0
  165. package/dist/chunk-SPBBQLXI.mjs +207 -0
  166. package/dist/chunk-SPBBQLXI.mjs.map +1 -0
  167. package/dist/chunk-SXZTEK3V.mjs +396 -0
  168. package/dist/chunk-SXZTEK3V.mjs.map +1 -0
  169. package/dist/chunk-T4QJQK76.mjs +459 -0
  170. package/dist/chunk-T4QJQK76.mjs.map +1 -0
  171. package/dist/chunk-TRORP7E4.mjs +41 -0
  172. package/dist/chunk-TRORP7E4.mjs.map +1 -0
  173. package/dist/chunk-TU4YJICB.mjs +728 -0
  174. package/dist/chunk-TU4YJICB.mjs.map +1 -0
  175. package/dist/chunk-TXCFGOHW.mjs +42 -0
  176. package/dist/chunk-TXCFGOHW.mjs.map +1 -0
  177. package/dist/chunk-UHE2TTLK.mjs +466 -0
  178. package/dist/chunk-UHE2TTLK.mjs.map +1 -0
  179. package/dist/chunk-UREJA4GZ.mjs +364 -0
  180. package/dist/chunk-UREJA4GZ.mjs.map +1 -0
  181. package/dist/chunk-USWZZUEH.mjs +25 -0
  182. package/dist/chunk-USWZZUEH.mjs.map +1 -0
  183. package/dist/chunk-UVCIEUJC.mjs +16 -0
  184. package/dist/chunk-UVCIEUJC.mjs.map +1 -0
  185. package/dist/chunk-V6WE6JSZ.mjs +352 -0
  186. package/dist/chunk-V6WE6JSZ.mjs.map +1 -0
  187. package/dist/chunk-V7RBCSDJ.mjs +170 -0
  188. package/dist/chunk-V7RBCSDJ.mjs.map +1 -0
  189. package/dist/chunk-VCANOYFI.mjs +588 -0
  190. package/dist/chunk-VCANOYFI.mjs.map +1 -0
  191. package/dist/chunk-WZ5QFROO.mjs +23 -0
  192. package/dist/chunk-WZ5QFROO.mjs.map +1 -0
  193. package/dist/chunk-Y2OJJD7R.mjs +543 -0
  194. package/dist/chunk-Y2OJJD7R.mjs.map +1 -0
  195. package/dist/chunk-Y7A27276.mjs +538 -0
  196. package/dist/chunk-Y7A27276.mjs.map +1 -0
  197. package/dist/chunk-YHU7SS6L.mjs +365 -0
  198. package/dist/chunk-YHU7SS6L.mjs.map +1 -0
  199. package/dist/chunk-ZBE6MLHL.mjs +230 -0
  200. package/dist/chunk-ZBE6MLHL.mjs.map +1 -0
  201. package/dist/chunk-ZJQNATYV.mjs +299 -0
  202. package/dist/chunk-ZJQNATYV.mjs.map +1 -0
  203. package/dist/client-D_yUjVhe.d.mts +402 -0
  204. package/dist/client-Dkc03WP8.d.ts +402 -0
  205. package/dist/client-cache-CIlyBlmx.d.ts +6 -0
  206. package/dist/client-cache-D-EZ7XVW.d.mts +6 -0
  207. package/dist/client-plugins-BZnpeTGA.d.ts +1848 -0
  208. package/dist/client-plugins-g4bzuCmo.d.mts +1848 -0
  209. package/dist/client-plugins.cjs +415 -0
  210. package/dist/client-plugins.cjs.map +1 -0
  211. package/dist/client-plugins.d.mts +21 -0
  212. package/dist/client-plugins.d.ts +21 -0
  213. package/dist/client-plugins.mjs +10 -0
  214. package/dist/client-plugins.mjs.map +1 -0
  215. package/dist/client.cjs +4571 -0
  216. package/dist/client.cjs.map +1 -0
  217. package/dist/client.d.mts +329 -0
  218. package/dist/client.d.ts +329 -0
  219. package/dist/client.mjs +103 -0
  220. package/dist/client.mjs.map +1 -0
  221. package/dist/config.cjs +38 -0
  222. package/dist/config.cjs.map +1 -0
  223. package/dist/config.d.mts +28 -0
  224. package/dist/config.d.ts +28 -0
  225. package/dist/config.mjs +10 -0
  226. package/dist/config.mjs.map +1 -0
  227. package/dist/cron.cjs +406 -0
  228. package/dist/cron.cjs.map +1 -0
  229. package/dist/cron.d.mts +78 -0
  230. package/dist/cron.d.ts +78 -0
  231. package/dist/cron.mjs +30 -0
  232. package/dist/cron.mjs.map +1 -0
  233. package/dist/deferred.cjs +438 -0
  234. package/dist/deferred.cjs.map +1 -0
  235. package/dist/deferred.d.mts +42 -0
  236. package/dist/deferred.d.ts +42 -0
  237. package/dist/deferred.mjs +28 -0
  238. package/dist/deferred.mjs.map +1 -0
  239. package/dist/deployment.cjs +199 -0
  240. package/dist/deployment.cjs.map +1 -0
  241. package/dist/deployment.d.mts +34 -0
  242. package/dist/deployment.d.ts +34 -0
  243. package/dist/deployment.mjs +38 -0
  244. package/dist/deployment.mjs.map +1 -0
  245. package/dist/devtools-AE4RVXCM.mjs +370 -0
  246. package/dist/devtools-AE4RVXCM.mjs.map +1 -0
  247. package/dist/devtools-client-6WPY2AQU.mjs +225 -0
  248. package/dist/devtools-client-6WPY2AQU.mjs.map +1 -0
  249. package/dist/devtools-ui-NJKFORTG.mjs +1349 -0
  250. package/dist/devtools-ui-NJKFORTG.mjs.map +1 -0
  251. package/dist/docs.cjs +5541 -0
  252. package/dist/docs.cjs.map +1 -0
  253. package/dist/docs.d.mts +69 -0
  254. package/dist/docs.d.ts +69 -0
  255. package/dist/docs.mjs +46 -0
  256. package/dist/docs.mjs.map +1 -0
  257. package/dist/env-types.cjs +223 -0
  258. package/dist/env-types.cjs.map +1 -0
  259. package/dist/env-types.d.mts +11 -0
  260. package/dist/env-types.d.ts +11 -0
  261. package/dist/env-types.mjs +9 -0
  262. package/dist/env-types.mjs.map +1 -0
  263. package/dist/env.cjs +215 -0
  264. package/dist/env.cjs.map +1 -0
  265. package/dist/env.d.mts +45 -0
  266. package/dist/env.d.ts +45 -0
  267. package/dist/env.mjs +22 -0
  268. package/dist/env.mjs.map +1 -0
  269. package/dist/environment/vite.cjs +374 -0
  270. package/dist/environment/vite.cjs.map +1 -0
  271. package/dist/environment/vite.d.mts +22 -0
  272. package/dist/environment/vite.d.ts +22 -0
  273. package/dist/environment/vite.mjs +10 -0
  274. package/dist/environment/vite.mjs.map +1 -0
  275. package/dist/environment.cjs +96 -0
  276. package/dist/environment.cjs.map +1 -0
  277. package/dist/environment.d.mts +18 -0
  278. package/dist/environment.d.ts +18 -0
  279. package/dist/environment.mjs +14 -0
  280. package/dist/environment.mjs.map +1 -0
  281. package/dist/headers.cjs +126 -0
  282. package/dist/headers.cjs.map +1 -0
  283. package/dist/headers.d.mts +22 -0
  284. package/dist/headers.d.ts +22 -0
  285. package/dist/headers.mjs +12 -0
  286. package/dist/headers.mjs.map +1 -0
  287. package/dist/i18n/client.cjs +283 -0
  288. package/dist/i18n/client.cjs.map +1 -0
  289. package/dist/i18n/client.d.mts +32 -0
  290. package/dist/i18n/client.d.ts +32 -0
  291. package/dist/i18n/client.mjs +121 -0
  292. package/dist/i18n/client.mjs.map +1 -0
  293. package/dist/i18n/index.cjs +130 -0
  294. package/dist/i18n/index.cjs.map +1 -0
  295. package/dist/i18n/index.d.mts +20 -0
  296. package/dist/i18n/index.d.ts +20 -0
  297. package/dist/i18n/index.mjs +22 -0
  298. package/dist/i18n/index.mjs.map +1 -0
  299. package/dist/i18n/server.cjs +637 -0
  300. package/dist/i18n/server.cjs.map +1 -0
  301. package/dist/i18n/server.d.mts +30 -0
  302. package/dist/i18n/server.d.ts +30 -0
  303. package/dist/i18n/server.mjs +32 -0
  304. package/dist/i18n/server.mjs.map +1 -0
  305. package/dist/image/server.cjs +477 -0
  306. package/dist/image/server.cjs.map +1 -0
  307. package/dist/image/server.d.mts +37 -0
  308. package/dist/image/server.d.ts +37 -0
  309. package/dist/image/server.mjs +16 -0
  310. package/dist/image/server.mjs.map +1 -0
  311. package/dist/image/sharp.cjs +135 -0
  312. package/dist/image/sharp.cjs.map +1 -0
  313. package/dist/image/sharp.d.mts +7 -0
  314. package/dist/image/sharp.d.ts +7 -0
  315. package/dist/image/sharp.mjs +75 -0
  316. package/dist/image/sharp.mjs.map +1 -0
  317. package/dist/image-config-Duob7wER.d.mts +50 -0
  318. package/dist/image-config-Duob7wER.d.ts +50 -0
  319. package/dist/image.cjs +209 -0
  320. package/dist/image.cjs.map +1 -0
  321. package/dist/image.d.mts +39 -0
  322. package/dist/image.d.ts +39 -0
  323. package/dist/image.mjs +165 -0
  324. package/dist/image.mjs.map +1 -0
  325. package/dist/index.cjs +39433 -0
  326. package/dist/index.cjs.map +1 -0
  327. package/dist/index.d.mts +451 -0
  328. package/dist/index.d.ts +451 -0
  329. package/dist/index.mjs +930 -0
  330. package/dist/index.mjs.map +1 -0
  331. package/dist/integration-api-CHT2OKAf.d.mts +93 -0
  332. package/dist/integration-api-CHT2OKAf.d.ts +93 -0
  333. package/dist/integration-orm-GQLGU66X.mjs +13 -0
  334. package/dist/integration-orm-GQLGU66X.mjs.map +1 -0
  335. package/dist/integrations.cjs +2820 -0
  336. package/dist/integrations.cjs.map +1 -0
  337. package/dist/integrations.d.mts +21 -0
  338. package/dist/integrations.d.ts +21 -0
  339. package/dist/integrations.mjs +51 -0
  340. package/dist/integrations.mjs.map +1 -0
  341. package/dist/internal/build-runtime.cjs +31340 -0
  342. package/dist/internal/build-runtime.cjs.map +1 -0
  343. package/dist/internal/build-runtime.d.mts +38 -0
  344. package/dist/internal/build-runtime.d.ts +38 -0
  345. package/dist/internal/build-runtime.mjs +73 -0
  346. package/dist/internal/build-runtime.mjs.map +1 -0
  347. package/dist/internal/client-runtime.cjs +579 -0
  348. package/dist/internal/client-runtime.cjs.map +1 -0
  349. package/dist/internal/client-runtime.d.mts +2 -0
  350. package/dist/internal/client-runtime.d.ts +2 -0
  351. package/dist/internal/client-runtime.mjs +12 -0
  352. package/dist/internal/client-runtime.mjs.map +1 -0
  353. package/dist/internal/config-runtime.cjs +4172 -0
  354. package/dist/internal/config-runtime.cjs.map +1 -0
  355. package/dist/internal/config-runtime.d.mts +38 -0
  356. package/dist/internal/config-runtime.d.ts +38 -0
  357. package/dist/internal/config-runtime.mjs +38 -0
  358. package/dist/internal/config-runtime.mjs.map +1 -0
  359. package/dist/internal/production-node-env.cjs +65 -0
  360. package/dist/internal/production-node-env.cjs.map +1 -0
  361. package/dist/internal/production-node-env.d.mts +12 -0
  362. package/dist/internal/production-node-env.d.ts +12 -0
  363. package/dist/internal/production-node-env.mjs +8 -0
  364. package/dist/internal/production-node-env.mjs.map +1 -0
  365. package/dist/internal/production-runtime.cjs +1896 -0
  366. package/dist/internal/production-runtime.cjs.map +1 -0
  367. package/dist/internal/production-runtime.d.mts +39 -0
  368. package/dist/internal/production-runtime.d.ts +39 -0
  369. package/dist/internal/production-runtime.mjs +79 -0
  370. package/dist/internal/production-runtime.mjs.map +1 -0
  371. package/dist/layers-VWVDTPUZ.mjs +16 -0
  372. package/dist/layers-VWVDTPUZ.mjs.map +1 -0
  373. package/dist/manager-THKFTOFE.mjs +10 -0
  374. package/dist/manager-THKFTOFE.mjs.map +1 -0
  375. package/dist/markdown.cjs +299 -0
  376. package/dist/markdown.cjs.map +1 -0
  377. package/dist/markdown.d.mts +43 -0
  378. package/dist/markdown.d.ts +43 -0
  379. package/dist/markdown.mjs +14 -0
  380. package/dist/markdown.mjs.map +1 -0
  381. package/dist/metadata-C9NZxMDW.d.mts +22 -0
  382. package/dist/metadata-DAXRaOHx.d.ts +22 -0
  383. package/dist/middleware.cjs +2148 -0
  384. package/dist/middleware.cjs.map +1 -0
  385. package/dist/middleware.d.mts +163 -0
  386. package/dist/middleware.d.ts +163 -0
  387. package/dist/middleware.mjs +49 -0
  388. package/dist/middleware.mjs.map +1 -0
  389. package/dist/navigation-errors-Dvwpzaer.d.mts +13 -0
  390. package/dist/navigation-errors-Dvwpzaer.d.ts +13 -0
  391. package/dist/navigation.cjs +1304 -0
  392. package/dist/navigation.cjs.map +1 -0
  393. package/dist/navigation.d.mts +14 -0
  394. package/dist/navigation.d.ts +14 -0
  395. package/dist/navigation.mjs +33 -0
  396. package/dist/navigation.mjs.map +1 -0
  397. package/dist/nitro-KME62MWG.mjs +691 -0
  398. package/dist/nitro-KME62MWG.mjs.map +1 -0
  399. package/dist/observability.cjs +186 -0
  400. package/dist/observability.cjs.map +1 -0
  401. package/dist/observability.d.mts +335 -0
  402. package/dist/observability.d.ts +335 -0
  403. package/dist/observability.mjs +16 -0
  404. package/dist/observability.mjs.map +1 -0
  405. package/dist/params-BALtrRim.d.ts +15 -0
  406. package/dist/params-ry-lxqmy.d.mts +15 -0
  407. package/dist/plugin-BJDf43dc.d.mts +165 -0
  408. package/dist/plugin-BJDf43dc.d.ts +165 -0
  409. package/dist/plugin.cjs +22285 -0
  410. package/dist/plugin.cjs.map +1 -0
  411. package/dist/plugin.d.mts +21 -0
  412. package/dist/plugin.d.ts +21 -0
  413. package/dist/plugin.mjs +60 -0
  414. package/dist/plugin.mjs.map +1 -0
  415. package/dist/production-runtime-C_B79w2P.d.mts +28 -0
  416. package/dist/production-runtime-DDEM1D2q.d.ts +28 -0
  417. package/dist/production-runtime-DRkCHUvJ.d.ts +79 -0
  418. package/dist/production-runtime-flrjp_nC.d.mts +79 -0
  419. package/dist/query/client.cjs +560 -0
  420. package/dist/query/client.cjs.map +1 -0
  421. package/dist/query/client.d.mts +61 -0
  422. package/dist/query/client.d.ts +61 -0
  423. package/dist/query/client.mjs +364 -0
  424. package/dist/query/client.mjs.map +1 -0
  425. package/dist/query/index.cjs +226 -0
  426. package/dist/query/index.cjs.map +1 -0
  427. package/dist/query/index.d.mts +90 -0
  428. package/dist/query/index.d.ts +90 -0
  429. package/dist/query/index.mjs +31 -0
  430. package/dist/query/index.mjs.map +1 -0
  431. package/dist/query/parsers.cjs +178 -0
  432. package/dist/query/parsers.cjs.map +1 -0
  433. package/dist/query/parsers.d.mts +25 -0
  434. package/dist/query/parsers.d.ts +25 -0
  435. package/dist/query/parsers.mjs +24 -0
  436. package/dist/query/parsers.mjs.map +1 -0
  437. package/dist/query/server.cjs +301 -0
  438. package/dist/query/server.cjs.map +1 -0
  439. package/dist/query/server.d.mts +55 -0
  440. package/dist/query/server.d.ts +55 -0
  441. package/dist/query/server.mjs +105 -0
  442. package/dist/query/server.mjs.map +1 -0
  443. package/dist/request-BrFBuc8G.d.mts +6 -0
  444. package/dist/request-BslSZIRz.d.ts +6 -0
  445. package/dist/request.cjs +71 -0
  446. package/dist/request.cjs.map +1 -0
  447. package/dist/request.d.mts +2 -0
  448. package/dist/request.d.ts +2 -0
  449. package/dist/request.mjs +9 -0
  450. package/dist/request.mjs.map +1 -0
  451. package/dist/resolver-C6iecsDV.d.ts +14 -0
  452. package/dist/resolver-DlOPpjkB.d.mts +14 -0
  453. package/dist/route-runtime-DoOHzCAD.d.mts +38 -0
  454. package/dist/route-runtime-DoOHzCAD.d.ts +38 -0
  455. package/dist/router.cjs +254 -0
  456. package/dist/router.cjs.map +1 -0
  457. package/dist/router.d.mts +36 -0
  458. package/dist/router.d.ts +36 -0
  459. package/dist/router.mjs +14 -0
  460. package/dist/router.mjs.map +1 -0
  461. package/dist/routes.cjs +1213 -0
  462. package/dist/routes.cjs.map +1 -0
  463. package/dist/routes.d.mts +224 -0
  464. package/dist/routes.d.ts +224 -0
  465. package/dist/routes.mjs +52 -0
  466. package/dist/routes.mjs.map +1 -0
  467. package/dist/runtime-B6GvwDS1.d.ts +27 -0
  468. package/dist/runtime-DeAAZ6gO.d.mts +27 -0
  469. package/dist/search-client-6OXIBNYQ.mjs +14 -0
  470. package/dist/search-client-6OXIBNYQ.mjs.map +1 -0
  471. package/dist/server-action-security.cjs +492 -0
  472. package/dist/server-action-security.cjs.map +1 -0
  473. package/dist/server-action-security.d.mts +42 -0
  474. package/dist/server-action-security.d.ts +42 -0
  475. package/dist/server-action-security.mjs +29 -0
  476. package/dist/server-action-security.mjs.map +1 -0
  477. package/dist/server-fn-client.cjs +180 -0
  478. package/dist/server-fn-client.cjs.map +1 -0
  479. package/dist/server-fn-client.d.mts +31 -0
  480. package/dist/server-fn-client.d.ts +31 -0
  481. package/dist/server-fn-client.mjs +9 -0
  482. package/dist/server-fn-client.mjs.map +1 -0
  483. package/dist/server-fn.cjs +284 -0
  484. package/dist/server-fn.cjs.map +1 -0
  485. package/dist/server-fn.d.mts +84 -0
  486. package/dist/server-fn.d.ts +84 -0
  487. package/dist/server-fn.mjs +17 -0
  488. package/dist/server-fn.mjs.map +1 -0
  489. package/dist/server-plugins.cjs +235 -0
  490. package/dist/server-plugins.cjs.map +1 -0
  491. package/dist/server-plugins.d.mts +54 -0
  492. package/dist/server-plugins.d.ts +54 -0
  493. package/dist/server-plugins.mjs +18 -0
  494. package/dist/server-plugins.mjs.map +1 -0
  495. package/dist/server-query-client.cjs +792 -0
  496. package/dist/server-query-client.cjs.map +1 -0
  497. package/dist/server-query-client.d.mts +50 -0
  498. package/dist/server-query-client.d.ts +50 -0
  499. package/dist/server-query-client.mjs +23 -0
  500. package/dist/server-query-client.mjs.map +1 -0
  501. package/dist/server-query.cjs +804 -0
  502. package/dist/server-query.cjs.map +1 -0
  503. package/dist/server-query.d.mts +36 -0
  504. package/dist/server-query.d.ts +36 -0
  505. package/dist/server-query.mjs +18 -0
  506. package/dist/server-query.mjs.map +1 -0
  507. package/dist/server.cjs +25739 -0
  508. package/dist/server.cjs.map +1 -0
  509. package/dist/server.d.mts +47 -0
  510. package/dist/server.d.ts +47 -0
  511. package/dist/server.mjs +511 -0
  512. package/dist/server.mjs.map +1 -0
  513. package/dist/storage.cjs +515 -0
  514. package/dist/storage.cjs.map +1 -0
  515. package/dist/storage.d.mts +52 -0
  516. package/dist/storage.d.ts +52 -0
  517. package/dist/storage.mjs +58 -0
  518. package/dist/storage.mjs.map +1 -0
  519. package/dist/testing.cjs +1882 -0
  520. package/dist/testing.cjs.map +1 -0
  521. package/dist/testing.d.mts +100 -0
  522. package/dist/testing.d.ts +100 -0
  523. package/dist/testing.mjs +324 -0
  524. package/dist/testing.mjs.map +1 -0
  525. package/dist/types-BH1lhg5G.d.mts +81 -0
  526. package/dist/types-BH1lhg5G.d.ts +81 -0
  527. package/dist/types-C9N-nk5R.d.mts +53 -0
  528. package/dist/types-C9N-nk5R.d.ts +53 -0
  529. package/dist/types-D1A6-XvH.d.mts +73 -0
  530. package/dist/types-D1A6-XvH.d.ts +73 -0
  531. package/dist/utils-DA1yo54_.d.ts +23 -0
  532. package/dist/utils-DOXXivjL.d.mts +23 -0
  533. package/dist/vite.cjs +22684 -0
  534. package/dist/vite.cjs.map +1 -0
  535. package/dist/vite.d.mts +21 -0
  536. package/dist/vite.d.ts +21 -0
  537. package/dist/vite.mjs +59 -0
  538. package/dist/vite.mjs.map +1 -0
  539. package/dist/workflows.cjs +586 -0
  540. package/dist/workflows.cjs.map +1 -0
  541. package/dist/workflows.d.mts +110 -0
  542. package/dist/workflows.d.ts +110 -0
  543. package/dist/workflows.mjs +32 -0
  544. package/dist/workflows.mjs.map +1 -0
  545. package/package.json +523 -0
  546. package/types/api.d.ts +88 -0
  547. package/types/client.d.ts +1171 -0
  548. package/types/index.d.ts +17 -0
  549. package/types/middleware.d.ts +266 -0
@@ -0,0 +1,352 @@
1
+ import {
2
+ __name
3
+ } from "./chunk-CGILA3WO.mjs";
4
+
5
+ // src/environment-vite.ts
6
+ var ENVIRONMENT_IMPORTS = /* @__PURE__ */ new Set([
7
+ "@farm.js/core",
8
+ "@farm.js/core/environment",
9
+ "@farm.js/core/server"
10
+ ]);
11
+ var ENVIRONMENT_FUNCTIONS = /* @__PURE__ */ new Set([
12
+ "createServerOnlyFn",
13
+ "createClientOnlyFn",
14
+ "createIsomorphicFn"
15
+ ]);
16
+ var MODULE_EXTENSION_RE = /\.[cm]?[jt]sx?$/;
17
+ function transformEnvironmentFunctions(options) {
18
+ if (!isTransformableModule(options.id) || !containsEnvironmentFunction(options.code)) {
19
+ return null;
20
+ }
21
+ let output = options.code;
22
+ let transformed = false;
23
+ for (let pass = 0; pass < 20; pass++) {
24
+ const ast = options.parse(output);
25
+ const bindings = findEnvironmentFunctionBindings(ast);
26
+ if (bindings.named.size === 0 && bindings.namespaces.size === 0) break;
27
+ const calls = findEnvironmentCalls(ast, bindings);
28
+ if (calls.length === 0) break;
29
+ const innermostCalls = calls.filter(
30
+ (call) => !calls.some(
31
+ (candidate) => candidate !== call && candidate.node.start > call.node.start && candidate.node.end < call.node.end
32
+ )
33
+ );
34
+ const replacements = innermostCalls.map(
35
+ (call) => createReplacement(output, options.id, options.environment, call)
36
+ );
37
+ output = applyReplacements(output, replacements);
38
+ transformed = true;
39
+ }
40
+ if (!transformed) return null;
41
+ const remainingAst = options.parse(output);
42
+ const remainingBindings = findEnvironmentFunctionBindings(remainingAst);
43
+ if (findEnvironmentCalls(remainingAst, remainingBindings).length > 0) {
44
+ throw transformError(options.id, "environment functions are nested too deeply");
45
+ }
46
+ return { code: output };
47
+ }
48
+ __name(transformEnvironmentFunctions, "transformEnvironmentFunctions");
49
+ function farmEnvironmentFunctionsPlugin() {
50
+ return {
51
+ name: "farm:environment-functions",
52
+ enforce: "post",
53
+ transform(code, id, transformOptions) {
54
+ const result = transformEnvironmentFunctions({
55
+ code,
56
+ id,
57
+ environment: resolveBuildEnvironment(
58
+ this,
59
+ transformOptions?.ssr
60
+ ),
61
+ parse: /* @__PURE__ */ __name((source) => this.parse(source), "parse")
62
+ });
63
+ return result ? { code: result.code, map: null } : null;
64
+ }
65
+ };
66
+ }
67
+ __name(farmEnvironmentFunctionsPlugin, "farmEnvironmentFunctionsPlugin");
68
+ function resolveBuildEnvironment(context, ssr) {
69
+ if (context.environment?.name === "client") return "client";
70
+ if (context.environment?.name === "rsc" || context.environment?.name === "ssr") {
71
+ return "server";
72
+ }
73
+ return ssr ? "server" : "client";
74
+ }
75
+ __name(resolveBuildEnvironment, "resolveBuildEnvironment");
76
+ function findEnvironmentFunctionBindings(ast) {
77
+ const named = /* @__PURE__ */ new Map();
78
+ const namespaces = /* @__PURE__ */ new Set();
79
+ const body = Array.isArray(ast.body) ? ast.body : [];
80
+ for (const statement of body) {
81
+ if (!isAstNode(statement) || statement.type !== "ImportDeclaration") continue;
82
+ const source = isAstNode(statement.source) ? statement.source.value : void 0;
83
+ if (typeof source !== "string" || !ENVIRONMENT_IMPORTS.has(source)) continue;
84
+ const specifiers = Array.isArray(statement.specifiers) ? statement.specifiers : [];
85
+ for (const specifier of specifiers) {
86
+ if (!isAstNode(specifier) || !isAstNode(specifier.local)) continue;
87
+ const localName = specifier.local.name;
88
+ if (typeof localName !== "string") continue;
89
+ if (specifier.type === "ImportNamespaceSpecifier") {
90
+ namespaces.add(localName);
91
+ continue;
92
+ }
93
+ if (specifier.type !== "ImportSpecifier" || !isAstNode(specifier.imported)) continue;
94
+ const importedName = specifier.imported.name ?? specifier.imported.value;
95
+ if (isEnvironmentFunctionKind(importedName)) {
96
+ named.set(localName, importedName);
97
+ }
98
+ }
99
+ }
100
+ return { named, namespaces };
101
+ }
102
+ __name(findEnvironmentFunctionBindings, "findEnvironmentFunctionBindings");
103
+ function findEnvironmentCalls(ast, bindings) {
104
+ const calls = [];
105
+ walkAst(ast, (node, ancestors) => {
106
+ if (node.type !== "CallExpression" || !isAstNode(node.callee)) return;
107
+ if (node.callee.type === "Identifier" && typeof node.callee.name === "string") {
108
+ const kind = bindings.named.get(node.callee.name);
109
+ if (kind && !isNameShadowed(node.callee.name, ancestors)) calls.push({ node, kind });
110
+ return;
111
+ }
112
+ if (node.callee.type !== "MemberExpression" || node.callee.computed === true || !isAstNode(node.callee.object) || !isAstNode(node.callee.property) || node.callee.object.type !== "Identifier" || node.callee.property.type !== "Identifier" || typeof node.callee.object.name !== "string" || typeof node.callee.property.name !== "string" || !bindings.namespaces.has(node.callee.object.name) || isNameShadowed(node.callee.object.name, ancestors) || !isEnvironmentFunctionKind(node.callee.property.name)) {
113
+ return;
114
+ }
115
+ calls.push({ node, kind: node.callee.property.name });
116
+ });
117
+ return calls;
118
+ }
119
+ __name(findEnvironmentCalls, "findEnvironmentCalls");
120
+ function createReplacement(code, id, environment, call) {
121
+ const args = Array.isArray(call.node.arguments) ? call.node.arguments : [];
122
+ if (args.length !== 1 || !isAstNode(args[0]) || args[0].type === "SpreadElement") {
123
+ throw transformError(id, `${call.kind}() requires exactly one static argument`);
124
+ }
125
+ let replacement;
126
+ if (call.kind === "createIsomorphicFn") {
127
+ replacement = selectIsomorphicImplementation(code, id, environment, args[0]);
128
+ } else {
129
+ const expected = call.kind === "createServerOnlyFn" ? "server" : "client";
130
+ replacement = environment === expected ? readNode(code, args[0]) : `(0, ${readNode(code, call.node.callee)})(undefined, ${JSON.stringify(environment)})`;
131
+ }
132
+ return {
133
+ start: call.node.start,
134
+ end: call.node.end,
135
+ code: `(${replacement})`
136
+ };
137
+ }
138
+ __name(createReplacement, "createReplacement");
139
+ function selectIsomorphicImplementation(code, id, environment, optionsNode) {
140
+ if (optionsNode.type !== "ObjectExpression") {
141
+ throw transformError(id, "createIsomorphicFn() requires an inline options object");
142
+ }
143
+ const properties = Array.isArray(optionsNode.properties) ? optionsNode.properties : [];
144
+ if (properties.some((property) => isAstNode(property) && property.type === "SpreadElement")) {
145
+ throw transformError(id, "createIsomorphicFn() does not support spread properties");
146
+ }
147
+ let selectedProperty;
148
+ for (const property of properties) {
149
+ if (!isAstNode(property) || property.type !== "Property" || property.computed === true) {
150
+ continue;
151
+ }
152
+ const key = readPropertyName(property.key);
153
+ if (key === environment) selectedProperty = property;
154
+ }
155
+ if (!selectedProperty || !isAstNode(selectedProperty.value)) {
156
+ throw transformError(id, `createIsomorphicFn() requires a ${environment} implementation`);
157
+ }
158
+ if (selectedProperty.kind !== void 0 && selectedProperty.kind !== "init") {
159
+ throw transformError(id, "createIsomorphicFn() does not support getters or setters");
160
+ }
161
+ return selectedProperty.method === true ? renderObjectMethod(code, id, selectedProperty.value) : readNode(code, selectedProperty.value);
162
+ }
163
+ __name(selectIsomorphicImplementation, "selectIsomorphicImplementation");
164
+ function renderObjectMethod(code, id, functionNode) {
165
+ if (!isAstNode(functionNode.body) || !Array.isArray(functionNode.params)) {
166
+ throw transformError(id, "createIsomorphicFn() received an unsupported method");
167
+ }
168
+ const params = functionNode.params.map((param) => {
169
+ if (!isAstNode(param)) {
170
+ throw transformError(id, "createIsomorphicFn() received an unsupported parameter");
171
+ }
172
+ return readNode(code, param);
173
+ });
174
+ const asyncPrefix = functionNode.async === true ? "async " : "";
175
+ const generatorMarker = functionNode.generator === true ? "*" : "";
176
+ return `${asyncPrefix}function${generatorMarker}(${params.join(", ")}) ${readNode(code, functionNode.body)}`;
177
+ }
178
+ __name(renderObjectMethod, "renderObjectMethod");
179
+ function applyReplacements(code, replacements) {
180
+ let output = code;
181
+ for (const replacement of replacements.sort((left, right) => right.start - left.start)) {
182
+ output = output.slice(0, replacement.start) + replacement.code + output.slice(replacement.end);
183
+ }
184
+ return output;
185
+ }
186
+ __name(applyReplacements, "applyReplacements");
187
+ function walkAst(node, visit, ancestors = []) {
188
+ visit(node, ancestors);
189
+ const childAncestors = [...ancestors, node];
190
+ for (const [key, value] of Object.entries(node)) {
191
+ if (key === "start" || key === "end" || key === "loc" || key === "range") continue;
192
+ if (isAstNode(value)) {
193
+ walkAst(value, visit, childAncestors);
194
+ } else if (Array.isArray(value)) {
195
+ for (const item of value) {
196
+ if (isAstNode(item)) walkAst(item, visit, childAncestors);
197
+ }
198
+ }
199
+ }
200
+ }
201
+ __name(walkAst, "walkAst");
202
+ function isNameShadowed(name, ancestors) {
203
+ for (const [index, ancestor] of ancestors.entries()) {
204
+ if (isFunctionNode(ancestor)) {
205
+ const params = Array.isArray(ancestor.params) ? ancestor.params : [];
206
+ if (params.some((param) => patternContainsName(param, name))) return true;
207
+ if (patternContainsName(ancestor.id, name)) return true;
208
+ if (isAstNode(ancestor.body) && ancestors.slice(index + 1).includes(ancestor.body) && functionBodyDeclaresVarName(ancestor.body, name)) {
209
+ return true;
210
+ }
211
+ }
212
+ if (ancestor.type === "CatchClause" && patternContainsName(ancestor.param, name)) {
213
+ return true;
214
+ }
215
+ if ((ancestor.type === "BlockStatement" || ancestor.type === "StaticBlock") && blockDeclaresName(ancestor, name)) {
216
+ return true;
217
+ }
218
+ if (loopDeclaresName(ancestor, name)) return true;
219
+ if (ancestor.type === "SwitchStatement" && ancestors.slice(index + 1).some((candidate) => candidate.type === "SwitchCase") && switchDeclaresName(ancestor, name)) {
220
+ return true;
221
+ }
222
+ if (ancestor.type === "ClassExpression" && patternContainsName(ancestor.id, name) && ancestors.slice(index + 1).some((candidate) => candidate.type === "ClassBody")) {
223
+ return true;
224
+ }
225
+ }
226
+ return false;
227
+ }
228
+ __name(isNameShadowed, "isNameShadowed");
229
+ function functionBodyDeclaresVarName(body, name) {
230
+ if (body.type === "VariableDeclaration" && body.kind === "var") {
231
+ const declarations = Array.isArray(body.declarations) ? body.declarations : [];
232
+ if (declarations.some(
233
+ (declaration) => isAstNode(declaration) && patternContainsName(declaration.id, name)
234
+ )) {
235
+ return true;
236
+ }
237
+ }
238
+ for (const [key, value] of Object.entries(body)) {
239
+ if (key === "start" || key === "end" || key === "loc" || key === "range") continue;
240
+ if (isAstNode(value)) {
241
+ if (isNestedVarScope(value)) continue;
242
+ if (functionBodyDeclaresVarName(value, name)) return true;
243
+ } else if (Array.isArray(value)) {
244
+ for (const item of value) {
245
+ if (!isAstNode(item) || isNestedVarScope(item)) continue;
246
+ if (functionBodyDeclaresVarName(item, name)) return true;
247
+ }
248
+ }
249
+ }
250
+ return false;
251
+ }
252
+ __name(functionBodyDeclaresVarName, "functionBodyDeclaresVarName");
253
+ function isNestedVarScope(node) {
254
+ return isFunctionNode(node) || node.type === "ClassDeclaration" || node.type === "ClassExpression";
255
+ }
256
+ __name(isNestedVarScope, "isNestedVarScope");
257
+ function loopDeclaresName(node, name) {
258
+ const declaration = node.type === "ForStatement" ? node.init : node.type === "ForInStatement" || node.type === "ForOfStatement" ? node.left : void 0;
259
+ if (!isAstNode(declaration) || declaration.type !== "VariableDeclaration") return false;
260
+ const declarations = Array.isArray(declaration.declarations) ? declaration.declarations : [];
261
+ return declarations.some((item) => isAstNode(item) && patternContainsName(item.id, name));
262
+ }
263
+ __name(loopDeclaresName, "loopDeclaresName");
264
+ function switchDeclaresName(node, name) {
265
+ const cases = Array.isArray(node.cases) ? node.cases : [];
266
+ return cases.some((switchCase) => {
267
+ if (!isAstNode(switchCase) || !Array.isArray(switchCase.consequent)) return false;
268
+ return switchCase.consequent.some((statement) => {
269
+ if (!isAstNode(statement)) return false;
270
+ if ((statement.type === "FunctionDeclaration" || statement.type === "ClassDeclaration") && patternContainsName(statement.id, name)) {
271
+ return true;
272
+ }
273
+ if (statement.type !== "VariableDeclaration" || statement.kind === "var") return false;
274
+ const declarations = Array.isArray(statement.declarations) ? statement.declarations : [];
275
+ return declarations.some(
276
+ (declaration) => isAstNode(declaration) && patternContainsName(declaration.id, name)
277
+ );
278
+ });
279
+ });
280
+ }
281
+ __name(switchDeclaresName, "switchDeclaresName");
282
+ function blockDeclaresName(block, name) {
283
+ const statements = Array.isArray(block.body) ? block.body : [];
284
+ for (const statement of statements) {
285
+ if (!isAstNode(statement)) continue;
286
+ if ((statement.type === "FunctionDeclaration" || statement.type === "ClassDeclaration") && patternContainsName(statement.id, name)) {
287
+ return true;
288
+ }
289
+ if (statement.type !== "VariableDeclaration" || !Array.isArray(statement.declarations)) {
290
+ continue;
291
+ }
292
+ if (statement.declarations.some(
293
+ (declaration) => isAstNode(declaration) && patternContainsName(declaration.id, name)
294
+ )) {
295
+ return true;
296
+ }
297
+ }
298
+ return false;
299
+ }
300
+ __name(blockDeclaresName, "blockDeclaresName");
301
+ function patternContainsName(value, name) {
302
+ if (!isAstNode(value)) return false;
303
+ if (value.type === "Identifier") return value.name === name;
304
+ if (value.type === "RestElement") return patternContainsName(value.argument, name);
305
+ if (value.type === "AssignmentPattern") return patternContainsName(value.left, name);
306
+ if (value.type === "Property") return patternContainsName(value.value, name);
307
+ const elements = Array.isArray(value.elements) ? value.elements : Array.isArray(value.properties) ? value.properties : [];
308
+ return elements.some((element) => patternContainsName(element, name));
309
+ }
310
+ __name(patternContainsName, "patternContainsName");
311
+ function isFunctionNode(node) {
312
+ return node.type === "FunctionDeclaration" || node.type === "FunctionExpression" || node.type === "ArrowFunctionExpression";
313
+ }
314
+ __name(isFunctionNode, "isFunctionNode");
315
+ function readPropertyName(value) {
316
+ if (!isAstNode(value)) return void 0;
317
+ if (value.type === "Identifier" && typeof value.name === "string") return value.name;
318
+ if (value.type === "Literal" && typeof value.value === "string") return value.value;
319
+ return void 0;
320
+ }
321
+ __name(readPropertyName, "readPropertyName");
322
+ function readNode(code, node) {
323
+ return code.slice(node.start, node.end);
324
+ }
325
+ __name(readNode, "readNode");
326
+ function isAstNode(value) {
327
+ return !!value && typeof value === "object" && typeof value.type === "string" && typeof value.start === "number" && typeof value.end === "number";
328
+ }
329
+ __name(isAstNode, "isAstNode");
330
+ function isEnvironmentFunctionKind(value) {
331
+ return typeof value === "string" && ENVIRONMENT_FUNCTIONS.has(value);
332
+ }
333
+ __name(isEnvironmentFunctionKind, "isEnvironmentFunctionKind");
334
+ function containsEnvironmentFunction(code) {
335
+ return Array.from(ENVIRONMENT_FUNCTIONS).some((name) => code.includes(name));
336
+ }
337
+ __name(containsEnvironmentFunction, "containsEnvironmentFunction");
338
+ function isTransformableModule(id) {
339
+ const cleanId = id.split("?", 1)[0];
340
+ return MODULE_EXTENSION_RE.test(cleanId) && !/\.d\.[cm]?ts$/.test(cleanId);
341
+ }
342
+ __name(isTransformableModule, "isTransformableModule");
343
+ function transformError(id, message) {
344
+ return new Error(`[Farm environment functions] ${message} in ${id.split("?", 1)[0]}`);
345
+ }
346
+ __name(transformError, "transformError");
347
+
348
+ export {
349
+ transformEnvironmentFunctions,
350
+ farmEnvironmentFunctionsPlugin
351
+ };
352
+ //# sourceMappingURL=chunk-V6WE6JSZ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/environment-vite.ts"],"sourcesContent":["import type { Plugin } from \"vite\";\nimport type { FarmEnvironment } from \"./environment\";\n\ntype EnvironmentFunctionKind = \"createServerOnlyFn\" | \"createClientOnlyFn\" | \"createIsomorphicFn\";\n\ninterface AstNode {\n type: string;\n start: number;\n end: number;\n [key: string]: unknown;\n}\n\ninterface EnvironmentCall {\n node: AstNode;\n kind: EnvironmentFunctionKind;\n}\n\ninterface Replacement {\n start: number;\n end: number;\n code: string;\n}\n\nexport interface TransformEnvironmentFunctionsOptions {\n code: string;\n id: string;\n environment: FarmEnvironment;\n parse: (code: string) => AstNode;\n}\n\nexport interface TransformEnvironmentFunctionsResult {\n code: string;\n}\n\nconst ENVIRONMENT_IMPORTS = new Set([\n \"@farm.js/core\",\n \"@farm.js/core/environment\",\n \"@farm.js/core/server\",\n]);\nconst ENVIRONMENT_FUNCTIONS = new Set<EnvironmentFunctionKind>([\n \"createServerOnlyFn\",\n \"createClientOnlyFn\",\n \"createIsomorphicFn\",\n]);\nconst MODULE_EXTENSION_RE = /\\.[cm]?[jt]sx?$/;\n\nexport function transformEnvironmentFunctions(\n options: TransformEnvironmentFunctionsOptions,\n): TransformEnvironmentFunctionsResult | null {\n if (!isTransformableModule(options.id) || !containsEnvironmentFunction(options.code)) {\n return null;\n }\n\n let output = options.code;\n let transformed = false;\n\n for (let pass = 0; pass < 20; pass++) {\n const ast = options.parse(output);\n const bindings = findEnvironmentFunctionBindings(ast);\n if (bindings.named.size === 0 && bindings.namespaces.size === 0) break;\n\n const calls = findEnvironmentCalls(ast, bindings);\n if (calls.length === 0) break;\n\n const innermostCalls = calls.filter(\n (call) =>\n !calls.some(\n (candidate) =>\n candidate !== call &&\n candidate.node.start > call.node.start &&\n candidate.node.end < call.node.end,\n ),\n );\n const replacements = innermostCalls.map((call) =>\n createReplacement(output, options.id, options.environment, call),\n );\n\n output = applyReplacements(output, replacements);\n transformed = true;\n }\n\n if (!transformed) return null;\n\n const remainingAst = options.parse(output);\n const remainingBindings = findEnvironmentFunctionBindings(remainingAst);\n if (findEnvironmentCalls(remainingAst, remainingBindings).length > 0) {\n throw transformError(options.id, \"environment functions are nested too deeply\");\n }\n\n return { code: output };\n}\n\nexport function farmEnvironmentFunctionsPlugin(): Plugin {\n return {\n name: \"farm:environment-functions\",\n enforce: \"post\",\n\n transform(code, id, transformOptions) {\n const result = transformEnvironmentFunctions({\n code,\n id,\n environment: resolveBuildEnvironment(\n this as unknown as { environment?: { name?: string } },\n transformOptions?.ssr,\n ),\n parse: (source) => this.parse(source) as unknown as AstNode,\n });\n\n return result ? { code: result.code, map: null } : null;\n },\n };\n}\n\nfunction resolveBuildEnvironment(\n context: { environment?: { name?: string } },\n ssr: boolean | undefined,\n): FarmEnvironment {\n if (context.environment?.name === \"client\") return \"client\";\n if (context.environment?.name === \"rsc\" || context.environment?.name === \"ssr\") {\n return \"server\";\n }\n return ssr ? \"server\" : \"client\";\n}\n\nfunction findEnvironmentFunctionBindings(ast: AstNode) {\n const named = new Map<string, EnvironmentFunctionKind>();\n const namespaces = new Set<string>();\n const body = Array.isArray(ast.body) ? ast.body : [];\n\n for (const statement of body) {\n if (!isAstNode(statement) || statement.type !== \"ImportDeclaration\") continue;\n const source = isAstNode(statement.source) ? statement.source.value : undefined;\n if (typeof source !== \"string\" || !ENVIRONMENT_IMPORTS.has(source)) continue;\n\n const specifiers = Array.isArray(statement.specifiers) ? statement.specifiers : [];\n for (const specifier of specifiers) {\n if (!isAstNode(specifier) || !isAstNode(specifier.local)) continue;\n const localName = specifier.local.name;\n if (typeof localName !== \"string\") continue;\n\n if (specifier.type === \"ImportNamespaceSpecifier\") {\n namespaces.add(localName);\n continue;\n }\n\n if (specifier.type !== \"ImportSpecifier\" || !isAstNode(specifier.imported)) continue;\n const importedName = specifier.imported.name ?? specifier.imported.value;\n if (isEnvironmentFunctionKind(importedName)) {\n named.set(localName, importedName);\n }\n }\n }\n\n return { named, namespaces };\n}\n\nfunction findEnvironmentCalls(\n ast: AstNode,\n bindings: ReturnType<typeof findEnvironmentFunctionBindings>,\n): EnvironmentCall[] {\n const calls: EnvironmentCall[] = [];\n\n walkAst(ast, (node, ancestors) => {\n if (node.type !== \"CallExpression\" || !isAstNode(node.callee)) return;\n\n if (node.callee.type === \"Identifier\" && typeof node.callee.name === \"string\") {\n const kind = bindings.named.get(node.callee.name);\n if (kind && !isNameShadowed(node.callee.name, ancestors)) calls.push({ node, kind });\n return;\n }\n\n if (\n node.callee.type !== \"MemberExpression\" ||\n node.callee.computed === true ||\n !isAstNode(node.callee.object) ||\n !isAstNode(node.callee.property) ||\n node.callee.object.type !== \"Identifier\" ||\n node.callee.property.type !== \"Identifier\" ||\n typeof node.callee.object.name !== \"string\" ||\n typeof node.callee.property.name !== \"string\" ||\n !bindings.namespaces.has(node.callee.object.name) ||\n isNameShadowed(node.callee.object.name, ancestors) ||\n !isEnvironmentFunctionKind(node.callee.property.name)\n ) {\n return;\n }\n\n calls.push({ node, kind: node.callee.property.name });\n });\n\n return calls;\n}\n\nfunction createReplacement(\n code: string,\n id: string,\n environment: FarmEnvironment,\n call: EnvironmentCall,\n): Replacement {\n const args = Array.isArray(call.node.arguments) ? call.node.arguments : [];\n if (args.length !== 1 || !isAstNode(args[0]) || args[0].type === \"SpreadElement\") {\n throw transformError(id, `${call.kind}() requires exactly one static argument`);\n }\n\n let replacement: string;\n if (call.kind === \"createIsomorphicFn\") {\n replacement = selectIsomorphicImplementation(code, id, environment, args[0]);\n } else {\n const expected = call.kind === \"createServerOnlyFn\" ? \"server\" : \"client\";\n replacement =\n environment === expected\n ? readNode(code, args[0])\n : `(0, ${readNode(code, call.node.callee as AstNode)})(undefined, ${JSON.stringify(environment)})`;\n }\n\n return {\n start: call.node.start,\n end: call.node.end,\n code: `(${replacement})`,\n };\n}\n\nfunction selectIsomorphicImplementation(\n code: string,\n id: string,\n environment: FarmEnvironment,\n optionsNode: AstNode,\n): string {\n if (optionsNode.type !== \"ObjectExpression\") {\n throw transformError(id, \"createIsomorphicFn() requires an inline options object\");\n }\n\n const properties = Array.isArray(optionsNode.properties) ? optionsNode.properties : [];\n if (properties.some((property) => isAstNode(property) && property.type === \"SpreadElement\")) {\n throw transformError(id, \"createIsomorphicFn() does not support spread properties\");\n }\n\n let selectedProperty: AstNode | undefined;\n for (const property of properties) {\n if (!isAstNode(property) || property.type !== \"Property\" || property.computed === true) {\n continue;\n }\n const key = readPropertyName(property.key);\n if (key === environment) selectedProperty = property;\n }\n\n if (!selectedProperty || !isAstNode(selectedProperty.value)) {\n throw transformError(id, `createIsomorphicFn() requires a ${environment} implementation`);\n }\n if (selectedProperty.kind !== undefined && selectedProperty.kind !== \"init\") {\n throw transformError(id, \"createIsomorphicFn() does not support getters or setters\");\n }\n\n return selectedProperty.method === true\n ? renderObjectMethod(code, id, selectedProperty.value)\n : readNode(code, selectedProperty.value);\n}\n\nfunction renderObjectMethod(code: string, id: string, functionNode: AstNode): string {\n if (!isAstNode(functionNode.body) || !Array.isArray(functionNode.params)) {\n throw transformError(id, \"createIsomorphicFn() received an unsupported method\");\n }\n\n const params = functionNode.params.map((param) => {\n if (!isAstNode(param)) {\n throw transformError(id, \"createIsomorphicFn() received an unsupported parameter\");\n }\n return readNode(code, param);\n });\n const asyncPrefix = functionNode.async === true ? \"async \" : \"\";\n const generatorMarker = functionNode.generator === true ? \"*\" : \"\";\n return `${asyncPrefix}function${generatorMarker}(${params.join(\", \")}) ${readNode(code, functionNode.body)}`;\n}\n\nfunction applyReplacements(code: string, replacements: Replacement[]): string {\n let output = code;\n for (const replacement of replacements.sort((left, right) => right.start - left.start)) {\n output = output.slice(0, replacement.start) + replacement.code + output.slice(replacement.end);\n }\n return output;\n}\n\nfunction walkAst(\n node: AstNode,\n visit: (node: AstNode, ancestors: readonly AstNode[]) => void,\n ancestors: readonly AstNode[] = [],\n) {\n visit(node, ancestors);\n const childAncestors = [...ancestors, node];\n\n for (const [key, value] of Object.entries(node)) {\n if (key === \"start\" || key === \"end\" || key === \"loc\" || key === \"range\") continue;\n if (isAstNode(value)) {\n walkAst(value, visit, childAncestors);\n } else if (Array.isArray(value)) {\n for (const item of value) {\n if (isAstNode(item)) walkAst(item, visit, childAncestors);\n }\n }\n }\n}\n\nfunction isNameShadowed(name: string, ancestors: readonly AstNode[]): boolean {\n for (const [index, ancestor] of ancestors.entries()) {\n if (isFunctionNode(ancestor)) {\n const params = Array.isArray(ancestor.params) ? ancestor.params : [];\n if (params.some((param) => patternContainsName(param, name))) return true;\n if (patternContainsName(ancestor.id, name)) return true;\n if (\n isAstNode(ancestor.body) &&\n ancestors.slice(index + 1).includes(ancestor.body) &&\n functionBodyDeclaresVarName(ancestor.body, name)\n ) {\n return true;\n }\n }\n\n if (ancestor.type === \"CatchClause\" && patternContainsName(ancestor.param, name)) {\n return true;\n }\n\n if (\n (ancestor.type === \"BlockStatement\" || ancestor.type === \"StaticBlock\") &&\n blockDeclaresName(ancestor, name)\n ) {\n return true;\n }\n\n if (loopDeclaresName(ancestor, name)) return true;\n\n if (\n ancestor.type === \"SwitchStatement\" &&\n ancestors.slice(index + 1).some((candidate) => candidate.type === \"SwitchCase\") &&\n switchDeclaresName(ancestor, name)\n ) {\n return true;\n }\n\n if (\n ancestor.type === \"ClassExpression\" &&\n patternContainsName(ancestor.id, name) &&\n ancestors.slice(index + 1).some((candidate) => candidate.type === \"ClassBody\")\n ) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction functionBodyDeclaresVarName(body: AstNode, name: string): boolean {\n if (body.type === \"VariableDeclaration\" && body.kind === \"var\") {\n const declarations = Array.isArray(body.declarations) ? body.declarations : [];\n if (\n declarations.some(\n (declaration) => isAstNode(declaration) && patternContainsName(declaration.id, name),\n )\n ) {\n return true;\n }\n }\n\n for (const [key, value] of Object.entries(body)) {\n if (key === \"start\" || key === \"end\" || key === \"loc\" || key === \"range\") continue;\n if (isAstNode(value)) {\n if (isNestedVarScope(value)) continue;\n if (functionBodyDeclaresVarName(value, name)) return true;\n } else if (Array.isArray(value)) {\n for (const item of value) {\n if (!isAstNode(item) || isNestedVarScope(item)) continue;\n if (functionBodyDeclaresVarName(item, name)) return true;\n }\n }\n }\n\n return false;\n}\n\nfunction isNestedVarScope(node: AstNode): boolean {\n return (\n isFunctionNode(node) || node.type === \"ClassDeclaration\" || node.type === \"ClassExpression\"\n );\n}\n\nfunction loopDeclaresName(node: AstNode, name: string): boolean {\n const declaration =\n node.type === \"ForStatement\"\n ? node.init\n : node.type === \"ForInStatement\" || node.type === \"ForOfStatement\"\n ? node.left\n : undefined;\n if (!isAstNode(declaration) || declaration.type !== \"VariableDeclaration\") return false;\n\n const declarations = Array.isArray(declaration.declarations) ? declaration.declarations : [];\n return declarations.some((item) => isAstNode(item) && patternContainsName(item.id, name));\n}\n\nfunction switchDeclaresName(node: AstNode, name: string): boolean {\n const cases = Array.isArray(node.cases) ? node.cases : [];\n return cases.some((switchCase) => {\n if (!isAstNode(switchCase) || !Array.isArray(switchCase.consequent)) return false;\n return switchCase.consequent.some((statement) => {\n if (!isAstNode(statement)) return false;\n if (\n (statement.type === \"FunctionDeclaration\" || statement.type === \"ClassDeclaration\") &&\n patternContainsName(statement.id, name)\n ) {\n return true;\n }\n if (statement.type !== \"VariableDeclaration\" || statement.kind === \"var\") return false;\n const declarations = Array.isArray(statement.declarations) ? statement.declarations : [];\n return declarations.some(\n (declaration) => isAstNode(declaration) && patternContainsName(declaration.id, name),\n );\n });\n });\n}\n\nfunction blockDeclaresName(block: AstNode, name: string): boolean {\n const statements = Array.isArray(block.body) ? block.body : [];\n for (const statement of statements) {\n if (!isAstNode(statement)) continue;\n if (\n (statement.type === \"FunctionDeclaration\" || statement.type === \"ClassDeclaration\") &&\n patternContainsName(statement.id, name)\n ) {\n return true;\n }\n if (statement.type !== \"VariableDeclaration\" || !Array.isArray(statement.declarations)) {\n continue;\n }\n if (\n statement.declarations.some(\n (declaration) => isAstNode(declaration) && patternContainsName(declaration.id, name),\n )\n ) {\n return true;\n }\n }\n return false;\n}\n\nfunction patternContainsName(value: unknown, name: string): boolean {\n if (!isAstNode(value)) return false;\n if (value.type === \"Identifier\") return value.name === name;\n\n if (value.type === \"RestElement\") return patternContainsName(value.argument, name);\n if (value.type === \"AssignmentPattern\") return patternContainsName(value.left, name);\n if (value.type === \"Property\") return patternContainsName(value.value, name);\n\n const elements = Array.isArray(value.elements)\n ? value.elements\n : Array.isArray(value.properties)\n ? value.properties\n : [];\n return elements.some((element) => patternContainsName(element, name));\n}\n\nfunction isFunctionNode(node: AstNode): boolean {\n return (\n node.type === \"FunctionDeclaration\" ||\n node.type === \"FunctionExpression\" ||\n node.type === \"ArrowFunctionExpression\"\n );\n}\n\nfunction readPropertyName(value: unknown): string | undefined {\n if (!isAstNode(value)) return undefined;\n if (value.type === \"Identifier\" && typeof value.name === \"string\") return value.name;\n if (value.type === \"Literal\" && typeof value.value === \"string\") return value.value;\n return undefined;\n}\n\nfunction readNode(code: string, node: AstNode): string {\n return code.slice(node.start, node.end);\n}\n\nfunction isAstNode(value: unknown): value is AstNode {\n return (\n !!value &&\n typeof value === \"object\" &&\n typeof (value as AstNode).type === \"string\" &&\n typeof (value as AstNode).start === \"number\" &&\n typeof (value as AstNode).end === \"number\"\n );\n}\n\nfunction isEnvironmentFunctionKind(value: unknown): value is EnvironmentFunctionKind {\n return typeof value === \"string\" && ENVIRONMENT_FUNCTIONS.has(value as EnvironmentFunctionKind);\n}\n\nfunction containsEnvironmentFunction(code: string): boolean {\n return Array.from(ENVIRONMENT_FUNCTIONS).some((name) => code.includes(name));\n}\n\nfunction isTransformableModule(id: string): boolean {\n const cleanId = id.split(\"?\", 1)[0];\n return MODULE_EXTENSION_RE.test(cleanId) && !/\\.d\\.[cm]?ts$/.test(cleanId);\n}\n\nfunction transformError(id: string, message: string): Error {\n return new Error(`[Farm environment functions] ${message} in ${id.split(\"?\", 1)[0]}`);\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,170 @@
1
+ import {
2
+ __name
3
+ } from "./chunk-CGILA3WO.mjs";
4
+
5
+ // src/docs/search-client.ts
6
+ import { existsSync } from "fs";
7
+ import { createRequire } from "module";
8
+ import path from "path";
9
+ function isFarmDocsSearchEnabled(docs) {
10
+ if (!docs?.enabled) return false;
11
+ const search = docs.config.search;
12
+ if (search === false) return false;
13
+ return !(search && typeof search === "object" && search.enabled === false);
14
+ }
15
+ __name(isFarmDocsSearchEnabled, "isFarmDocsSearchEnabled");
16
+ function resolveFarmDocsSearchClientModule(root) {
17
+ try {
18
+ const requireFromApp = createRequire(path.join(path.resolve(root), "package.json"));
19
+ const themeEntry = requireFromApp.resolve("@farming-labs/theme");
20
+ const commandSearchModule = path.join(path.dirname(themeEntry), "docs-command-search.mjs");
21
+ if (existsSync(commandSearchModule)) return commandSearchModule;
22
+ } catch {
23
+ }
24
+ return void 0;
25
+ }
26
+ __name(resolveFarmDocsSearchClientModule, "resolveFarmDocsSearchClientModule");
27
+ function generateFarmDocsSearchBootstrapRuntime() {
28
+ return `(()=>{if(window.__farmDocsSearchBootstrap)return;window.__farmDocsSearchBootstrap=true;const queue=(trigger,event)=>{if(window.__FARM_DOCS_SEARCH_BRIDGE_ACTIVE__)return;event.preventDefault();event.stopPropagation();event.stopImmediatePropagation();window.__FARM_DOCS_SEARCH_PENDING__=trigger;window.__FARM_MOUNT_DOCS_SEARCH__?.()};document.addEventListener("click",(event)=>{const target=event.target instanceof Element?event.target.closest("[data-search-full]"):null;if(target)queue("button",event)},true);document.addEventListener("keydown",(event)=>{if((event.metaKey||event.ctrlKey)&&event.key.toLowerCase()==="k")queue("keyboard",event)},true)})();`;
29
+ }
30
+ __name(generateFarmDocsSearchBootstrapRuntime, "generateFarmDocsSearchBootstrapRuntime");
31
+ function generateFarmDocsSearchClientRuntime(enabled, moduleId) {
32
+ if (!enabled || !moduleId) {
33
+ return `
34
+ function isFarmDocsSearchPage() {
35
+ return false;
36
+ }
37
+
38
+ async function mountFarmDocsSearch() {
39
+ return false;
40
+ }
41
+ `;
42
+ }
43
+ return `
44
+ let farmDocsSearchRoot = null;
45
+ let farmDocsSearchContainer = null;
46
+ let farmDocsSearchModulePromise = null;
47
+ let farmDocsSearchPendingTrigger = window.__FARM_DOCS_SEARCH_PENDING__ === 'keyboard'
48
+ ? 'keyboard'
49
+ : window.__FARM_DOCS_SEARCH_PENDING__
50
+ ? 'button'
51
+ : null;
52
+ let farmDocsSearchReady = false;
53
+
54
+ function isFarmDocsSearchPage() {
55
+ return document.querySelector('[data-farm-docs-search-root]') instanceof HTMLElement;
56
+ }
57
+
58
+ function replayFarmDocsSearchOpen() {
59
+ const pendingTrigger = farmDocsSearchPendingTrigger;
60
+ farmDocsSearchPendingTrigger = null;
61
+ window.__FARM_DOCS_SEARCH_PENDING__ = null;
62
+ if (!pendingTrigger) return;
63
+
64
+ queueMicrotask(() => {
65
+ if (pendingTrigger === 'keyboard') {
66
+ document.dispatchEvent(
67
+ new KeyboardEvent('keydown', {
68
+ key: 'k',
69
+ metaKey: true,
70
+ bubbles: true,
71
+ cancelable: true,
72
+ }),
73
+ );
74
+ } else {
75
+ const trigger = document.querySelector('[data-search-full]');
76
+ if (trigger instanceof HTMLElement) trigger.click();
77
+ }
78
+ });
79
+ }
80
+
81
+ function FarmDocsSearchBridge({ component, api }) {
82
+ React.useEffect(() => {
83
+ farmDocsSearchReady = true;
84
+ replayFarmDocsSearchOpen();
85
+ return () => {
86
+ farmDocsSearchReady = false;
87
+ };
88
+ }, []);
89
+
90
+ return React.createElement(component, { api });
91
+ }
92
+
93
+ function queueFarmDocsSearchOpen(trigger, event) {
94
+ if (farmDocsSearchReady) return;
95
+ event.preventDefault();
96
+ event.stopPropagation();
97
+ event.stopImmediatePropagation();
98
+ farmDocsSearchPendingTrigger = trigger;
99
+ window.__FARM_DOCS_SEARCH_PENDING__ = trigger;
100
+ void mountFarmDocsSearch();
101
+ }
102
+
103
+ document.addEventListener(
104
+ 'click',
105
+ (event) => {
106
+ const target = event.target instanceof Element
107
+ ? event.target.closest('[data-search-full]')
108
+ : null;
109
+ if (target) queueFarmDocsSearchOpen('button', event);
110
+ },
111
+ true,
112
+ );
113
+
114
+ document.addEventListener(
115
+ 'keydown',
116
+ (event) => {
117
+ if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === 'k') {
118
+ queueFarmDocsSearchOpen('keyboard', event);
119
+ }
120
+ },
121
+ true,
122
+ );
123
+
124
+ window.__FARM_DOCS_SEARCH_BRIDGE_ACTIVE__ = true;
125
+
126
+ async function mountFarmDocsSearch() {
127
+ const container = document.querySelector('[data-farm-docs-search-root]');
128
+ if (!(container instanceof HTMLElement)) return false;
129
+ if (farmDocsSearchContainer === container && farmDocsSearchRoot) return true;
130
+
131
+ try {
132
+ farmDocsSearchModulePromise ||= import(${JSON.stringify(moduleId)});
133
+ const { DocsCommandSearch } = await farmDocsSearchModulePromise;
134
+ if (!container.isConnected) return false;
135
+
136
+ if (farmDocsSearchRoot) {
137
+ farmDocsSearchReady = false;
138
+ try {
139
+ farmDocsSearchRoot.unmount();
140
+ } catch {}
141
+ }
142
+
143
+ farmDocsSearchContainer = container;
144
+ farmDocsSearchRoot = createRoot(container);
145
+ farmDocsSearchRoot.render(
146
+ React.createElement(FarmDocsSearchBridge, {
147
+ component: DocsCommandSearch,
148
+ api: container.dataset.api || '/api/docs',
149
+ }),
150
+ );
151
+ return true;
152
+ } catch (error) {
153
+ farmDocsSearchModulePromise = null;
154
+ console.error('[Farm.js] Could not load docs search:', error);
155
+ return false;
156
+ }
157
+ }
158
+
159
+ window.__FARM_MOUNT_DOCS_SEARCH__ = mountFarmDocsSearch;
160
+ `;
161
+ }
162
+ __name(generateFarmDocsSearchClientRuntime, "generateFarmDocsSearchClientRuntime");
163
+
164
+ export {
165
+ isFarmDocsSearchEnabled,
166
+ resolveFarmDocsSearchClientModule,
167
+ generateFarmDocsSearchBootstrapRuntime,
168
+ generateFarmDocsSearchClientRuntime
169
+ };
170
+ //# sourceMappingURL=chunk-V7RBCSDJ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/docs/search-client.ts"],"sourcesContent":["import { existsSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport path from \"node:path\";\nimport type { FarmDocsResolvedConfig } from \"./types\";\n\nexport function isFarmDocsSearchEnabled(docs: FarmDocsResolvedConfig | undefined): boolean {\n if (!docs?.enabled) return false;\n\n const search = docs.config.search;\n if (search === false) return false;\n return !(search && typeof search === \"object\" && search.enabled === false);\n}\n\nexport function resolveFarmDocsSearchClientModule(root: string): string | undefined {\n try {\n const requireFromApp = createRequire(path.join(path.resolve(root), \"package.json\"));\n const themeEntry = requireFromApp.resolve(\"@farming-labs/theme\");\n const commandSearchModule = path.join(path.dirname(themeEntry), \"docs-command-search.mjs\");\n if (existsSync(commandSearchModule)) return commandSearchModule;\n } catch {\n // The public package entry remains a compatible fallback.\n }\n\n return undefined;\n}\n\nexport function generateFarmDocsSearchBootstrapRuntime(): string {\n return `(()=>{if(window.__farmDocsSearchBootstrap)return;window.__farmDocsSearchBootstrap=true;const queue=(trigger,event)=>{if(window.__FARM_DOCS_SEARCH_BRIDGE_ACTIVE__)return;event.preventDefault();event.stopPropagation();event.stopImmediatePropagation();window.__FARM_DOCS_SEARCH_PENDING__=trigger;window.__FARM_MOUNT_DOCS_SEARCH__?.()};document.addEventListener(\"click\",(event)=>{const target=event.target instanceof Element?event.target.closest(\"[data-search-full]\"):null;if(target)queue(\"button\",event)},true);document.addEventListener(\"keydown\",(event)=>{if((event.metaKey||event.ctrlKey)&&event.key.toLowerCase()===\"k\")queue(\"keyboard\",event)},true)})();`;\n}\n\nexport function generateFarmDocsSearchClientRuntime(enabled: boolean, moduleId?: string): string {\n if (!enabled || !moduleId) {\n return `\nfunction isFarmDocsSearchPage() {\n return false;\n}\n\nasync function mountFarmDocsSearch() {\n return false;\n}\n`;\n }\n\n return `\nlet farmDocsSearchRoot = null;\nlet farmDocsSearchContainer = null;\nlet farmDocsSearchModulePromise = null;\nlet farmDocsSearchPendingTrigger = window.__FARM_DOCS_SEARCH_PENDING__ === 'keyboard'\n ? 'keyboard'\n : window.__FARM_DOCS_SEARCH_PENDING__\n ? 'button'\n : null;\nlet farmDocsSearchReady = false;\n\nfunction isFarmDocsSearchPage() {\n return document.querySelector('[data-farm-docs-search-root]') instanceof HTMLElement;\n}\n\nfunction replayFarmDocsSearchOpen() {\n const pendingTrigger = farmDocsSearchPendingTrigger;\n farmDocsSearchPendingTrigger = null;\n window.__FARM_DOCS_SEARCH_PENDING__ = null;\n if (!pendingTrigger) return;\n\n queueMicrotask(() => {\n if (pendingTrigger === 'keyboard') {\n document.dispatchEvent(\n new KeyboardEvent('keydown', {\n key: 'k',\n metaKey: true,\n bubbles: true,\n cancelable: true,\n }),\n );\n } else {\n const trigger = document.querySelector('[data-search-full]');\n if (trigger instanceof HTMLElement) trigger.click();\n }\n });\n}\n\nfunction FarmDocsSearchBridge({ component, api }) {\n React.useEffect(() => {\n farmDocsSearchReady = true;\n replayFarmDocsSearchOpen();\n return () => {\n farmDocsSearchReady = false;\n };\n }, []);\n\n return React.createElement(component, { api });\n}\n\nfunction queueFarmDocsSearchOpen(trigger, event) {\n if (farmDocsSearchReady) return;\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n farmDocsSearchPendingTrigger = trigger;\n window.__FARM_DOCS_SEARCH_PENDING__ = trigger;\n void mountFarmDocsSearch();\n}\n\ndocument.addEventListener(\n 'click',\n (event) => {\n const target = event.target instanceof Element\n ? event.target.closest('[data-search-full]')\n : null;\n if (target) queueFarmDocsSearchOpen('button', event);\n },\n true,\n);\n\ndocument.addEventListener(\n 'keydown',\n (event) => {\n if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === 'k') {\n queueFarmDocsSearchOpen('keyboard', event);\n }\n },\n true,\n);\n\nwindow.__FARM_DOCS_SEARCH_BRIDGE_ACTIVE__ = true;\n\nasync function mountFarmDocsSearch() {\n const container = document.querySelector('[data-farm-docs-search-root]');\n if (!(container instanceof HTMLElement)) return false;\n if (farmDocsSearchContainer === container && farmDocsSearchRoot) return true;\n\n try {\n farmDocsSearchModulePromise ||= import(${JSON.stringify(moduleId)});\n const { DocsCommandSearch } = await farmDocsSearchModulePromise;\n if (!container.isConnected) return false;\n\n if (farmDocsSearchRoot) {\n farmDocsSearchReady = false;\n try {\n farmDocsSearchRoot.unmount();\n } catch {}\n }\n\n farmDocsSearchContainer = container;\n farmDocsSearchRoot = createRoot(container);\n farmDocsSearchRoot.render(\n React.createElement(FarmDocsSearchBridge, {\n component: DocsCommandSearch,\n api: container.dataset.api || '/api/docs',\n }),\n );\n return true;\n } catch (error) {\n farmDocsSearchModulePromise = null;\n console.error('[Farm.js] Could not load docs search:', error);\n return false;\n }\n}\n\nwindow.__FARM_MOUNT_DOCS_SEARCH__ = mountFarmDocsSearch;\n`;\n}\n"],"mappings":";;;;;AAAA,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAC9B,OAAO,UAAU;AAGV,SAAS,wBAAwB,MAAmD;AACzF,MAAI,CAAC,MAAM,QAAS,QAAO;AAE3B,QAAM,SAAS,KAAK,OAAO;AAC3B,MAAI,WAAW,MAAO,QAAO;AAC7B,SAAO,EAAE,UAAU,OAAO,WAAW,YAAY,OAAO,YAAY;AACtE;AANgB;AAQT,SAAS,kCAAkC,MAAkC;AAClF,MAAI;AACF,UAAM,iBAAiB,cAAc,KAAK,KAAK,KAAK,QAAQ,IAAI,GAAG,cAAc,CAAC;AAClF,UAAM,aAAa,eAAe,QAAQ,qBAAqB;AAC/D,UAAM,sBAAsB,KAAK,KAAK,KAAK,QAAQ,UAAU,GAAG,yBAAyB;AACzF,QAAI,WAAW,mBAAmB,EAAG,QAAO;AAAA,EAC9C,QAAQ;AAAA,EAER;AAEA,SAAO;AACT;AAXgB;AAaT,SAAS,yCAAiD;AAC/D,SAAO;AACT;AAFgB;AAIT,SAAS,oCAAoC,SAAkB,UAA2B;AAC/F,MAAI,CAAC,WAAW,CAAC,UAAU;AACzB,WAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAST;AAEA,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6CAyFoC,KAAK,UAAU,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6BrE;AAnIgB;","names":[]}