@farm.js/core 0.1.61 → 0.1.62
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.
- package/dist/after.cjs +3 -3
- package/dist/after.d.mts +25 -0
- package/dist/after.d.ts +25 -0
- package/dist/after.mjs +2 -2
- package/dist/agent-mcp-handler-7QMX2LUY.mjs +18 -0
- package/dist/agent-mcp-handler-OV4WRFBL.cjs +18 -0
- package/dist/agent-mcp.d-BKZ3UNbt.d.mts +115 -0
- package/dist/agent-mcp.d-C1zr_nGS.d.ts +115 -0
- package/dist/agent-runtime.cjs +36 -59
- package/dist/agent-runtime.d.mts +105 -0
- package/dist/agent-runtime.d.ts +105 -0
- package/dist/agent-runtime.mjs +35 -58
- package/dist/analyzer-2AHWJJR7.cjs +15 -0
- package/dist/analyzer-YESYU3GK.mjs +15 -0
- package/dist/api/client.cjs +16 -15
- package/dist/api/client.d.mts +5 -0
- package/dist/api/client.d.ts +5 -0
- package/dist/api/client.mjs +14 -13
- package/dist/api/client.native.cjs +45 -0
- package/dist/api/client.native.d.mts +23 -0
- package/dist/api/client.native.d.ts +23 -0
- package/dist/api/client.native.mjs +45 -0
- package/dist/api/route-manager.cjs +41 -39
- package/dist/api/route-manager.d.mts +119 -0
- package/dist/api/route-manager.d.ts +119 -0
- package/dist/api/route-manager.mjs +40 -38
- package/dist/api/runtime.cjs +24 -22
- package/dist/api/runtime.d.mts +35 -0
- package/dist/api/runtime.d.ts +35 -0
- package/dist/api/runtime.mjs +24 -22
- package/dist/api-client.d-BNLXNCXJ.d.mts +622 -0
- package/dist/api-client.d-ddQBNGtu.d.ts +622 -0
- package/dist/api.cjs +52 -50
- package/dist/api.d.mts +103 -0
- package/dist/api.d.ts +103 -0
- package/dist/api.mjs +51 -49
- package/dist/app-manifest.d-BpvhfKRH.d.mts +120 -0
- package/dist/app-manifest.d-ntch_bvA.d.ts +120 -0
- package/dist/app-markdown.cjs +15 -15
- package/dist/app-markdown.d.mts +48 -0
- package/dist/app-markdown.d.ts +48 -0
- package/dist/app-markdown.mjs +14 -14
- package/dist/app.d-AE8_v3Db.d.ts +563 -0
- package/dist/app.d-CysWA_8v.d.mts +563 -0
- package/dist/base-path.d-BOUV5ozD.d.mts +10 -0
- package/dist/base-path.d-BOUV5ozD.d.ts +10 -0
- package/dist/cache.cjs +10 -7
- package/dist/cache.d.mts +333 -0
- package/dist/cache.d.ts +333 -0
- package/dist/cache.mjs +9 -6
- package/dist/chunk-22W4FNTG.mjs +538 -0
- package/dist/chunk-23LVFSID.mjs +182 -0
- package/dist/chunk-25T5VXOE.mjs +1093 -0
- package/dist/chunk-2CNKQC3G.mjs +433 -0
- package/dist/chunk-2DA7CLY7.mjs +560 -0
- package/dist/chunk-2DLGV2ZG.mjs +71 -0
- package/dist/chunk-2HW5LWAH.cjs +19 -0
- package/dist/chunk-2I6PUKWJ.mjs +44 -0
- package/dist/chunk-2JYBLE63.mjs +9482 -0
- package/dist/chunk-2KMIJDY6.cjs +20 -0
- package/dist/chunk-2NGZFOKG.mjs +190 -0
- package/dist/chunk-2OF5RPVU.cjs +44 -0
- package/dist/chunk-2WZTGPK6.mjs +65 -0
- package/dist/chunk-2XGBJSDV.cjs +408 -0
- package/dist/chunk-3BIASUGR.cjs +59 -0
- package/dist/chunk-3CCAICF7.cjs +651 -0
- package/dist/chunk-3EEET2Q5.cjs +1044 -0
- package/dist/chunk-3EIPOTZV.cjs +272 -0
- package/dist/chunk-3HLQTOVU.cjs +6 -0
- package/dist/chunk-3OJNNCDL.cjs +2250 -0
- package/dist/chunk-3TXKFRSO.mjs +657 -0
- package/dist/chunk-3UZVPO72.mjs +387 -0
- package/dist/chunk-43V3ANPQ.mjs +251 -0
- package/dist/chunk-46P5KNTE.mjs +8 -0
- package/dist/chunk-47JV57DA.cjs +69 -0
- package/dist/chunk-4BS3HSY7.cjs +541 -0
- package/dist/chunk-4DCWVSL2.cjs +15 -0
- package/dist/chunk-4EBC7EMW.cjs +8 -0
- package/dist/chunk-4IHMHFQB.cjs +458 -0
- package/dist/chunk-4MU4QCX4.mjs +158 -0
- package/dist/chunk-4P5634G6.cjs +386 -0
- package/dist/chunk-4ZJ5C7UJ.cjs +75 -0
- package/dist/chunk-52Y3C3HG.mjs +421 -0
- package/dist/chunk-53EHWHT2.cjs +166 -0
- package/dist/chunk-53ZCZ46B.cjs +137 -0
- package/dist/chunk-545WJ5UG.cjs +1294 -0
- package/dist/chunk-55U5QIXQ.mjs +35 -0
- package/dist/chunk-5A77OEIG.cjs +778 -0
- package/dist/chunk-5C7XMKQ4.cjs +410 -0
- package/dist/chunk-5DX3O6TT.cjs +266 -0
- package/dist/chunk-5FE5YT2N.mjs +458 -0
- package/dist/chunk-5IQ2ERQA.cjs +657 -0
- package/dist/chunk-5J45H65F.mjs +48 -0
- package/dist/chunk-5OJVKXFV.cjs +2072 -0
- package/dist/chunk-5PZJ63PK.mjs +17 -0
- package/dist/chunk-5Y22WNTO.mjs +237 -0
- package/dist/chunk-5Y2P454O.cjs +421 -0
- package/dist/chunk-5Y4GYKKH.mjs +13 -0
- package/dist/chunk-5YPBFMBN.cjs +19 -0
- package/dist/chunk-65Y5SIBH.cjs +112 -0
- package/dist/chunk-6BJJYOFL.cjs +293 -0
- package/dist/chunk-6BLAY2VQ.mjs +45 -0
- package/dist/chunk-6CTFVBAT.cjs +29 -0
- package/dist/chunk-6FXBJPF5.cjs +35 -0
- package/dist/chunk-6HRAK7I5.mjs +215 -0
- package/dist/chunk-6IOZPJ3I.cjs +549 -0
- package/dist/chunk-6JHZPB52.cjs +538 -0
- package/dist/chunk-6XQSPIN6.cjs +155 -0
- package/dist/chunk-6YFC3ZFX.mjs +449 -0
- package/dist/chunk-6ZFRWRHO.mjs +54 -0
- package/dist/chunk-724WT3NI.mjs +83 -0
- package/dist/chunk-72KABRWN.mjs +2072 -0
- package/dist/chunk-72KCTHLV.cjs +723 -0
- package/dist/chunk-752XUZIM.cjs +229 -0
- package/dist/chunk-75XSZIRE.mjs +180 -0
- package/dist/chunk-7EPYN7GW.cjs +30 -0
- package/dist/chunk-7H45IJWO.mjs +2250 -0
- package/dist/chunk-7H4SVNC4.cjs +700 -0
- package/dist/chunk-7JUIK547.cjs +62 -0
- package/dist/chunk-7KJJ4SBS.cjs +13 -0
- package/dist/chunk-7PTISZSQ.cjs +176 -0
- package/dist/chunk-7PZVXMWG.mjs +113 -0
- package/dist/chunk-7S7AAK2D.mjs +82 -0
- package/dist/chunk-A25FXJ7D.cjs +38 -0
- package/dist/chunk-A2MN5PQJ.mjs +527 -0
- package/dist/chunk-A4PWGL46.mjs +141 -0
- package/dist/chunk-AJB3DHN6.cjs +156 -0
- package/dist/chunk-ALEUMLJN.mjs +190 -0
- package/dist/chunk-AOKXITZ6.cjs +16 -0
- package/dist/chunk-AQLHD6HZ.cjs +196 -0
- package/dist/chunk-ATYTLVSI.cjs +45 -0
- package/dist/chunk-AXVRUDMB.cjs +203 -0
- package/dist/chunk-AY2YD5ZX.mjs +34 -0
- package/dist/chunk-AYP2YFVN.mjs +168 -0
- package/dist/chunk-AZQXXXDX.mjs +80 -0
- package/dist/chunk-B4CWYGCG.mjs +541 -0
- package/dist/chunk-BBPDJGCU.cjs +157 -0
- package/dist/chunk-BM2LH2JM.mjs +1040 -0
- package/dist/chunk-BMQAPZXD.mjs +31 -0
- package/dist/chunk-BNH53KOT.cjs +69 -0
- package/dist/chunk-BPAXGCKX.mjs +166 -0
- package/dist/chunk-BPNOYILC.cjs +450 -0
- package/dist/chunk-BQWBHWEW.mjs +252 -0
- package/dist/chunk-BRWIVOV4.cjs +48 -0
- package/dist/chunk-BRYPZIMB.mjs +6 -0
- package/dist/chunk-BT4SEFLC.cjs +660 -0
- package/dist/chunk-BTZ5O6VM.cjs +14 -0
- package/dist/chunk-BUC3FDYC.cjs +158 -0
- package/dist/chunk-C64XOPBZ.mjs +380 -0
- package/dist/chunk-C7GJDVN4.mjs +124 -0
- package/dist/chunk-C7LCTVJ2.cjs +30 -0
- package/dist/chunk-CA7DNRHO.cjs +164 -0
- package/dist/chunk-CBOEJ5Z4.cjs +1093 -0
- package/dist/chunk-CFG4QERR.cjs +434 -0
- package/dist/chunk-CI4UNQHO.cjs +35 -0
- package/dist/chunk-CKPTIEDX.cjs +12 -0
- package/dist/chunk-CL2ONP73.cjs +180 -0
- package/dist/chunk-CLFEQGET.cjs +60 -0
- package/dist/chunk-CNNBFGL5.cjs +252 -0
- package/dist/chunk-CO6UYM2D.mjs +172 -0
- package/dist/chunk-CQL5ZGFU.cjs +50 -0
- package/dist/chunk-CROAFCMW.mjs +203 -0
- package/dist/chunk-CSLUBKGG.mjs +44 -0
- package/dist/chunk-CU5SYTJG.mjs +23 -0
- package/dist/chunk-CV6MFQ4Y.mjs +259 -0
- package/dist/chunk-D22BUQKW.cjs +82 -0
- package/dist/chunk-D2LCAV6L.mjs +79 -0
- package/dist/chunk-D4MRNBVF.cjs +1462 -0
- package/dist/chunk-D4XGKF67.cjs +127 -0
- package/dist/chunk-D7Y63SOY.mjs +15 -0
- package/dist/chunk-DMAP4RND.cjs +998 -0
- package/dist/chunk-DPE53XWL.mjs +1980 -0
- package/dist/chunk-DQF3QLOH.mjs +660 -0
- package/dist/chunk-DQJ2CIH7.cjs +87 -0
- package/dist/chunk-DU4VHHPJ.mjs +157 -0
- package/dist/chunk-DUIP64BF.cjs +16 -0
- package/dist/chunk-DV52ZS53.cjs +40 -0
- package/dist/chunk-DXUXQP2T.cjs +142 -0
- package/dist/chunk-DZPR2W6U.cjs +593 -0
- package/dist/chunk-DZZHTMWM.cjs +190 -0
- package/dist/chunk-E46NXBNJ.mjs +386 -0
- package/dist/chunk-E4RDMG3K.mjs +697 -0
- package/dist/chunk-E552H232.cjs +154 -0
- package/dist/chunk-E72UD6ME.mjs +277 -0
- package/dist/chunk-E7QOEV5Z.cjs +449 -0
- package/dist/chunk-ECKQFEX2.mjs +712 -0
- package/dist/chunk-EDPENAVO.mjs +266 -0
- package/dist/chunk-EFLNOZGH.mjs +30 -0
- package/dist/chunk-EFZGB7JC.cjs +114 -0
- package/dist/chunk-EGHPFXPZ.cjs +590 -0
- package/dist/chunk-EJCVG25Z.mjs +49 -0
- package/dist/chunk-EMDGXYUD.mjs +75 -0
- package/dist/chunk-EOXPRC2C.cjs +48 -0
- package/dist/chunk-ERMUL73L.cjs +39 -0
- package/dist/chunk-ES2LD2YD.mjs +203 -0
- package/dist/chunk-EV4SBMPX.mjs +208 -0
- package/dist/chunk-EVIWKPJV.cjs +560 -0
- package/dist/chunk-EVMXPJCB.mjs +133 -0
- package/dist/chunk-EX6ZSN5P.cjs +224 -0
- package/dist/chunk-EXXFSZOC.cjs +12736 -0
- package/dist/chunk-EZ34EHQP.mjs +462 -0
- package/dist/chunk-EZTKXD6P.cjs +182 -0
- package/dist/chunk-F3N52U7S.mjs +138 -0
- package/dist/chunk-FBEBSAVI.cjs +225 -0
- package/dist/chunk-FEFCISOX.cjs +102 -0
- package/dist/chunk-FHURJABM.mjs +45 -0
- package/dist/chunk-FN5UEC7I.mjs +55 -0
- package/dist/chunk-FSXSQQTV.mjs +79 -0
- package/dist/chunk-GBMWLDCC.cjs +138 -0
- package/dist/chunk-GGNJAGGE.cjs +9485 -0
- package/dist/chunk-GHNW564E.mjs +1044 -0
- package/dist/chunk-GL3ZDHKI.mjs +274 -0
- package/dist/chunk-GLOICKDO.mjs +142 -0
- package/dist/chunk-GNZIAJGB.mjs +358 -0
- package/dist/chunk-GSVJ3IIF.cjs +173 -0
- package/dist/chunk-GUZC226X.mjs +164 -0
- package/dist/chunk-GVOMPU3Y.cjs +537 -0
- package/dist/chunk-GWXZS7K5.mjs +24 -0
- package/dist/chunk-GYMGK467.mjs +214 -0
- package/dist/chunk-H227LYHT.mjs +88 -0
- package/dist/chunk-H3ASZDT7.mjs +42 -0
- package/dist/chunk-H4WUWLQR.mjs +16 -0
- package/dist/chunk-HA7YRO53.cjs +214 -0
- package/dist/chunk-HEPJIKKQ.cjs +190 -0
- package/dist/chunk-HLYRXN2I.cjs +242 -0
- package/dist/chunk-HNAISJFD.cjs +215 -0
- package/dist/chunk-HPP2II4Z.mjs +332 -0
- package/dist/chunk-HXNLKCWH.cjs +13 -0
- package/dist/chunk-HZOMT5DY.mjs +30 -0
- package/dist/chunk-I2BYNELA.cjs +380 -0
- package/dist/chunk-I32V5CZL.cjs +1965 -0
- package/dist/chunk-IAPTECEB.mjs +48 -0
- package/dist/chunk-IFTGERT3.mjs +408 -0
- package/dist/chunk-IGL6CO6M.mjs +9 -0
- package/dist/chunk-IOF4KXMP.mjs +537 -0
- package/dist/chunk-IQIKPKFP.mjs +6600 -0
- package/dist/chunk-ITV4QQL2.cjs +93 -0
- package/dist/chunk-IWRLV46X.cjs +1980 -0
- package/dist/chunk-IYEY3JWJ.mjs +186 -0
- package/dist/chunk-J3GFOQOL.cjs +237 -0
- package/dist/chunk-JCEFKP5M.mjs +1473 -0
- package/dist/chunk-JEJQGZI7.cjs +1232 -0
- package/dist/chunk-JGAE5XPL.cjs +26 -0
- package/dist/chunk-JIBEFLQ7.cjs +44 -0
- package/dist/chunk-JLDNXURZ.cjs +588 -0
- package/dist/chunk-JMYXO572.cjs +531 -0
- package/dist/chunk-JNYFXL7X.mjs +62 -0
- package/dist/chunk-JRHGJVJH.mjs +44 -0
- package/dist/chunk-JSDV2NUN.mjs +206 -0
- package/dist/chunk-JXIYH2NO.cjs +24 -0
- package/dist/chunk-JYNNIGQO.cjs +87 -0
- package/dist/chunk-JYT7AN37.cjs +79 -0
- package/dist/chunk-K3RU5MOR.mjs +80 -0
- package/dist/chunk-K5EW7GUU.mjs +417 -0
- package/dist/chunk-K76CBYQM.mjs +157 -0
- package/dist/chunk-KBGZ5FD6.cjs +17 -0
- package/dist/chunk-KORZ6PRE.cjs +64 -0
- package/dist/chunk-KPAJWD3N.mjs +168 -0
- package/dist/chunk-KQH2COEJ.mjs +42 -0
- package/dist/chunk-KVW2M6PI.mjs +341 -0
- package/dist/chunk-L2JG337G.cjs +712 -0
- package/dist/chunk-L4RTTTVE.mjs +8 -0
- package/dist/chunk-L5JDKFMQ.cjs +44 -0
- package/dist/chunk-LEJDW34D.cjs +115 -0
- package/dist/chunk-LLZSYFOM.mjs +6 -0
- package/dist/chunk-LM55GS4R.mjs +38 -0
- package/dist/chunk-LNVGXUL3.cjs +172 -0
- package/dist/chunk-LQNW3ABP.cjs +527 -0
- package/dist/chunk-LRB5OVRT.cjs +124 -0
- package/dist/chunk-LSHX2H5G.cjs +57 -0
- package/dist/chunk-LT4VAF5Z.cjs +1359 -0
- package/dist/chunk-LVWGURLD.mjs +1232 -0
- package/dist/chunk-M25IONJP.mjs +16 -0
- package/dist/chunk-M53MIIXY.mjs +172 -0
- package/dist/chunk-MEQN6DDA.cjs +341 -0
- package/dist/chunk-MF3IA2AW.cjs +25 -0
- package/dist/chunk-MFQGU5CC.mjs +127 -0
- package/dist/chunk-MGKW5XZE.cjs +40 -0
- package/dist/chunk-MHLNWRCJ.cjs +36 -0
- package/dist/chunk-MK5E44WP.mjs +60 -0
- package/dist/chunk-MMK4MZUN.mjs +36 -0
- package/dist/chunk-MNIR7I7B.mjs +217 -0
- package/dist/chunk-MPU5DOXX.cjs +21 -0
- package/dist/chunk-MU5V7XHL.mjs +172 -0
- package/dist/chunk-N33DLJBC.mjs +272 -0
- package/dist/chunk-N35YPV4N.mjs +48 -0
- package/dist/chunk-N4AQNEXR.cjs +17 -0
- package/dist/chunk-N7XWC6BN.mjs +21 -0
- package/dist/chunk-NBIVGHAT.mjs +50 -0
- package/dist/chunk-NCIAP562.mjs +27 -0
- package/dist/chunk-NK2VWS7P.cjs +954 -0
- package/dist/chunk-NKRZLQUK.mjs +150 -0
- package/dist/chunk-NR63PD3P.mjs +64 -0
- package/dist/chunk-NRNAHZ57.mjs +39 -0
- package/dist/chunk-NT3QDN2E.mjs +9 -0
- package/dist/chunk-NWUHS6GV.cjs +79 -0
- package/dist/chunk-O27PLNQZ.cjs +878 -0
- package/dist/chunk-O4F3JUST.mjs +176 -0
- package/dist/chunk-OAJOQU5J.mjs +225 -0
- package/dist/chunk-OCS3PSYR.cjs +51 -0
- package/dist/chunk-OHWM2VI4.mjs +29 -0
- package/dist/chunk-OJO2GOM3.mjs +69 -0
- package/dist/chunk-OLGQZRW6.mjs +700 -0
- package/dist/chunk-OM7WILES.mjs +100 -0
- package/dist/chunk-ONG4RDW3.mjs +155 -0
- package/dist/chunk-OOJBBHYW.cjs +38 -0
- package/dist/chunk-OOZEU5KK.cjs +18 -0
- package/dist/chunk-OUWRNHTV.mjs +12733 -0
- package/dist/chunk-OWQV6MLM.cjs +82 -0
- package/dist/chunk-OY5XDG24.cjs +113 -0
- package/dist/chunk-OYZXVBZP.cjs +133 -0
- package/dist/chunk-OZC2JPW6.cjs +10 -0
- package/dist/chunk-P2355C6E.cjs +186 -0
- package/dist/chunk-PAKCHVUS.mjs +450 -0
- package/dist/chunk-PCXIJKPM.mjs +878 -0
- package/dist/chunk-PENBZAHJ.cjs +88 -0
- package/dist/chunk-PIUTGRDI.cjs +358 -0
- package/dist/chunk-PMJSG4JS.cjs +152 -0
- package/dist/chunk-PO5MXV5X.cjs +13 -0
- package/dist/chunk-PRFNLQSP.cjs +277 -0
- package/dist/chunk-PSUYE5HR.mjs +25 -0
- package/dist/chunk-PTLXHRJZ.mjs +57 -0
- package/dist/chunk-PZXYAWYG.cjs +274 -0
- package/dist/chunk-Q5B4LNON.mjs +19 -0
- package/dist/chunk-QAS7KE7J.cjs +169 -0
- package/dist/chunk-QDWMCFTH.mjs +434 -0
- package/dist/chunk-QGJ4FI2G.mjs +723 -0
- package/dist/chunk-QGOZLGVP.mjs +0 -0
- package/dist/chunk-QISW423S.cjs +335 -0
- package/dist/chunk-QMDU6QHN.mjs +778 -0
- package/dist/chunk-QMNWKQL4.cjs +206 -0
- package/dist/chunk-QOSDWGKT.mjs +109 -0
- package/dist/chunk-QPJ4MZTO.mjs +60 -0
- package/dist/chunk-QPNVDSFZ.mjs +18 -0
- package/dist/chunk-QQ44FYRO.cjs +27 -0
- package/dist/chunk-QSTRBKHZ.mjs +102 -0
- package/dist/chunk-QTD6EMN2.mjs +368 -0
- package/dist/chunk-R53QDV6T.cjs +100 -0
- package/dist/chunk-R5U7OIPI.cjs +34 -0
- package/dist/chunk-R62SF5R4.mjs +410 -0
- package/dist/chunk-RD623KW4.cjs +203 -0
- package/dist/chunk-RFKTJTWZ.mjs +26 -0
- package/dist/chunk-RI3EVPKD.cjs +57 -0
- package/dist/chunk-RLEALQEN.mjs +998 -0
- package/dist/chunk-RMUD75WT.cjs +6600 -0
- package/dist/chunk-RSEAX5MW.mjs +44 -0
- package/dist/chunk-RVGLYMJM.cjs +259 -0
- package/dist/chunk-RZNCMRD3.mjs +141 -0
- package/dist/chunk-S32PDOLO.mjs +13 -0
- package/dist/chunk-S6O2L47H.mjs +549 -0
- package/dist/chunk-SA7MLSP4.mjs +229 -0
- package/dist/chunk-SBDWCDS6.cjs +8 -0
- package/dist/chunk-SF3JB56B.mjs +82 -0
- package/dist/chunk-SG57PX7K.cjs +65 -0
- package/dist/chunk-SGBNF56S.cjs +44 -0
- package/dist/chunk-SHD265HW.cjs +19 -0
- package/dist/chunk-SHIWRBFI.cjs +17 -0
- package/dist/chunk-SM25ZC4S.cjs +9 -0
- package/dist/chunk-SM2SYWAR.cjs +49 -0
- package/dist/chunk-SMUW7UST.mjs +196 -0
- package/dist/chunk-SNP33A33.cjs +9 -0
- package/dist/chunk-STF6VDYQ.cjs +23 -0
- package/dist/chunk-SUCDVKUB.cjs +42 -0
- package/dist/chunk-SVCUSOEF.mjs +590 -0
- package/dist/chunk-SVXOCTQ2.cjs +251 -0
- package/dist/chunk-SXCL2MIN.cjs +208 -0
- package/dist/chunk-SYW346ZN.cjs +71 -0
- package/dist/chunk-SYXPWJ7N.cjs +387 -0
- package/dist/chunk-T46NNU4D.mjs +716 -0
- package/dist/chunk-T4TBK5NY.mjs +593 -0
- package/dist/chunk-TGSEVBPO.mjs +93 -0
- package/dist/chunk-TGULJSHD.mjs +1965 -0
- package/dist/chunk-TJVUTGED.mjs +531 -0
- package/dist/chunk-TUOO6IK3.mjs +87 -0
- package/dist/chunk-TUPKMMXT.mjs +173 -0
- package/dist/chunk-TVCFY3KK.cjs +217 -0
- package/dist/chunk-TZVUF5JJ.mjs +651 -0
- package/dist/chunk-UAQD67HM.mjs +154 -0
- package/dist/chunk-UB7RVEMX.mjs +73 -0
- package/dist/chunk-UIJOLBUL.mjs +19 -0
- package/dist/chunk-UNJZGVPU.cjs +6 -0
- package/dist/chunk-UPYIFH2H.cjs +168 -0
- package/dist/chunk-UR25Z5Z6.mjs +135 -0
- package/dist/chunk-UUMKLGUU.mjs +69 -0
- package/dist/chunk-UWI3SJAK.cjs +141 -0
- package/dist/chunk-UYRI6U3P.mjs +137 -0
- package/dist/chunk-UYTAP4FQ.cjs +60 -0
- package/dist/chunk-UZCMMJJT.cjs +80 -0
- package/dist/chunk-UZZ6IEQP.mjs +169 -0
- package/dist/chunk-V3UOEWCB.cjs +46 -0
- package/dist/chunk-V56632LA.cjs +141 -0
- package/dist/chunk-V727H3RI.cjs +1473 -0
- package/dist/chunk-VE3FWJBO.mjs +46 -0
- package/dist/chunk-VFXE6NWR.mjs +87 -0
- package/dist/chunk-VHIXGZYH.mjs +9 -0
- package/dist/chunk-VISQDC6W.mjs +10 -0
- package/dist/chunk-VIXTAVEA.mjs +59 -0
- package/dist/chunk-VM57CK74.cjs +42 -0
- package/dist/chunk-VM7X5CKC.mjs +491 -0
- package/dist/chunk-VOQ7XZZT.cjs +157 -0
- package/dist/chunk-VQJHT2ND.mjs +40 -0
- package/dist/chunk-VR6QLTTX.mjs +59 -0
- package/dist/chunk-VVTJTMGQ.cjs +135 -0
- package/dist/chunk-VWW4Q3BJ.mjs +1291 -0
- package/dist/chunk-VXCFJWK5.cjs +59 -0
- package/dist/chunk-W2ZXMMHA.mjs +1462 -0
- package/dist/chunk-W6QLRQ3V.mjs +152 -0
- package/dist/chunk-WCLLPR6H.mjs +35 -0
- package/dist/chunk-WEGAVN37.cjs +45 -0
- package/dist/chunk-WFVSAT7Y.cjs +83 -0
- package/dist/chunk-WKJQ2FJA.cjs +433 -0
- package/dist/chunk-WKPBIT5Q.cjs +150 -0
- package/dist/chunk-WNDAISB7.mjs +51 -0
- package/dist/chunk-WNLPQW7W.mjs +19 -0
- package/dist/chunk-WT6RAN2I.cjs +41 -0
- package/dist/chunk-WXFY5JIY.mjs +20 -0
- package/dist/chunk-WYAXRIYP.cjs +697 -0
- package/dist/chunk-WYL4ODZ4.mjs +38 -0
- package/dist/chunk-X333W5KV.cjs +31 -0
- package/dist/chunk-X3EFRVXY.mjs +12 -0
- package/dist/chunk-X3XUZWRB.mjs +141 -0
- package/dist/chunk-X4K7TYN6.cjs +1040 -0
- package/dist/chunk-XCXHQBMM.mjs +115 -0
- package/dist/chunk-XGJVRPYL.cjs +141 -0
- package/dist/chunk-XMHERKSE.mjs +224 -0
- package/dist/chunk-XPIPMWY3.cjs +1 -0
- package/dist/chunk-XQ4DPO4G.mjs +13 -0
- package/dist/chunk-XQSYOVCW.cjs +417 -0
- package/dist/chunk-XR2ZIBQK.mjs +57 -0
- package/dist/chunk-XURDCXNH.cjs +48 -0
- package/dist/chunk-XVSBALOY.cjs +55 -0
- package/dist/chunk-XX32BOMM.cjs +491 -0
- package/dist/chunk-Y3WG64CP.cjs +9 -0
- package/dist/chunk-Y6FXYEAI.mjs +10 -0
- package/dist/chunk-Y7NN63LS.mjs +40 -0
- package/dist/chunk-YDXLC4DW.cjs +54 -0
- package/dist/chunk-YIHRZBD7.cjs +172 -0
- package/dist/chunk-YKHRCY4T.cjs +73 -0
- package/dist/chunk-YN6BHOYY.cjs +368 -0
- package/dist/chunk-YP7YO3S3.mjs +17 -0
- package/dist/chunk-YSXTNSXS.mjs +1359 -0
- package/dist/chunk-YT3SLLZK.mjs +242 -0
- package/dist/chunk-YTVSWXEZ.cjs +168 -0
- package/dist/chunk-YWPNIYUP.mjs +41 -0
- package/dist/chunk-YX6AFPXC.mjs +8 -0
- package/dist/chunk-Z64V4WZI.mjs +17 -0
- package/dist/chunk-Z7P2BTZ3.cjs +454 -0
- package/dist/chunk-ZBUAOGMY.mjs +156 -0
- package/dist/chunk-ZDAEHG2O.cjs +80 -0
- package/dist/chunk-ZFWYCVKS.mjs +454 -0
- package/dist/chunk-ZNH6NR3H.cjs +462 -0
- package/dist/chunk-ZNXTU4YH.mjs +114 -0
- package/dist/chunk-ZOYKJBP5.cjs +172 -0
- package/dist/chunk-ZQ5BDNKW.mjs +954 -0
- package/dist/chunk-ZVIEFTUA.cjs +716 -0
- package/dist/chunk-ZXK2EYQW.cjs +8 -0
- package/dist/chunk-ZZ2QKCKW.mjs +293 -0
- package/dist/chunk-ZZI56IUY.mjs +588 -0
- package/dist/chunk-recovery.d-lnQFzcQP.d.mts +26 -0
- package/dist/chunk-recovery.d-lnQFzcQP.d.ts +26 -0
- package/dist/client/lifecycle.cjs +3 -3
- package/dist/client/lifecycle.d.mts +1 -0
- package/dist/client/lifecycle.d.ts +1 -0
- package/dist/client/lifecycle.mjs +2 -2
- package/dist/client-cache.d-Deoqq-nM.d.ts +76 -0
- package/dist/client-cache.d-di_Nasxa.d.mts +76 -0
- package/dist/client-component.d-Bgt3x5Fu.d.ts +207 -0
- package/dist/client-component.d-BoqC2MLC.d.mts +207 -0
- package/dist/client-plugins.cjs +3 -3
- package/dist/client-plugins.d-BcqIy4au.d.ts +4009 -0
- package/dist/client-plugins.d-CWyYBxXf.d.mts +4009 -0
- package/dist/client-plugins.d.mts +33 -0
- package/dist/client-plugins.d.ts +33 -0
- package/dist/client-plugins.mjs +2 -2
- package/dist/client.cjs +45 -40
- package/dist/client.d.mts +452 -0
- package/dist/client.d.ts +452 -0
- package/dist/client.mjs +44 -39
- package/dist/client.react-server.mjs +2 -0
- package/dist/config.cjs +3 -3
- package/dist/config.d-qt-mE8O5.d.mts +341 -0
- package/dist/config.d-qt-mE8O5.d.ts +341 -0
- package/dist/config.d.mts +40 -0
- package/dist/config.d.ts +40 -0
- package/dist/config.mjs +2 -2
- package/dist/cron.cjs +19 -9
- package/dist/cron.d.mts +186 -0
- package/dist/cron.d.ts +186 -0
- package/dist/cron.mjs +18 -8
- package/dist/deferred.cjs +3 -3
- package/dist/deferred.d.mts +44 -0
- package/dist/deferred.d.ts +44 -0
- package/dist/deferred.mjs +2 -2
- package/dist/deployment.cjs +3 -3
- package/dist/deployment.d.mts +36 -0
- package/dist/deployment.d.ts +36 -0
- package/dist/deployment.mjs +2 -2
- package/dist/desktop.cjs +13 -0
- package/dist/desktop.d.mts +120 -0
- package/dist/desktop.d.ts +120 -0
- package/dist/desktop.mjs +13 -0
- package/dist/dev-guard-2UW2KERP.cjs +59 -0
- package/dist/dev-guard-ONNMVQUN.mjs +59 -0
- package/dist/devtools-NUVXYG7I.mjs +463 -0
- package/dist/devtools-SVRSGPNC.cjs +463 -0
- package/dist/devtools-client-SU4XH46J.mjs +250 -0
- package/dist/devtools-client-X5OQCXDF.cjs +250 -0
- package/dist/devtools-ui-CYBVFLPH.mjs +1265 -0
- package/dist/devtools-ui-SYRUXUA7.cjs +1265 -0
- package/dist/docs.cjs +66 -58
- package/dist/docs.d.mts +169 -0
- package/dist/docs.d.ts +169 -0
- package/dist/docs.mjs +65 -57
- package/dist/endpoint.d-BgHn0lhl.d.ts +370 -0
- package/dist/endpoint.d-BkMSCRf6.d.mts +370 -0
- package/dist/env-types.cjs +4 -4
- package/dist/env-types.d.mts +12 -0
- package/dist/env-types.d.ts +12 -0
- package/dist/env-types.mjs +3 -3
- package/dist/env.cjs +4 -4
- package/dist/env.d.mts +65 -0
- package/dist/env.d.ts +65 -0
- package/dist/env.mjs +3 -3
- package/dist/environment/vite.cjs +7 -3
- package/dist/environment/vite.d.mts +31 -0
- package/dist/environment/vite.d.ts +31 -0
- package/dist/environment/vite.mjs +6 -2
- package/dist/environment.cjs +3 -3
- package/dist/environment.d.mts +18 -0
- package/dist/environment.d.ts +18 -0
- package/dist/environment.mjs +2 -2
- package/dist/font.cjs +3 -3
- package/dist/font.d.mts +95 -0
- package/dist/font.d.ts +95 -0
- package/dist/font.mjs +2 -2
- package/dist/generate-route-types.d-BL2pq6xC.d.ts +33 -0
- package/dist/generate-route-types.d-BoVDU8qX.d.mts +33 -0
- package/dist/headers.cjs +8 -6
- package/dist/headers.d.mts +32 -0
- package/dist/headers.d.ts +32 -0
- package/dist/headers.mjs +7 -5
- package/dist/i18n/client.cjs +19 -30
- package/dist/i18n/client.d.mts +32 -0
- package/dist/i18n/client.d.ts +32 -0
- package/dist/i18n/client.mjs +9 -20
- package/dist/i18n/index.cjs +6 -6
- package/dist/i18n/index.d.mts +3 -0
- package/dist/i18n/index.d.ts +3 -0
- package/dist/i18n/index.mjs +5 -5
- package/dist/i18n/server.cjs +10 -10
- package/dist/i18n/server.d.mts +30 -0
- package/dist/i18n/server.d.ts +30 -0
- package/dist/i18n/server.mjs +9 -9
- package/dist/image/server.cjs +9 -5
- package/dist/image/server.d.mts +59 -0
- package/dist/image/server.d.ts +59 -0
- package/dist/image/server.mjs +8 -4
- package/dist/image/sharp.cjs +16 -20
- package/dist/image/sharp.d.mts +20 -0
- package/dist/image/sharp.d.ts +20 -0
- package/dist/image/sharp.mjs +8 -12
- package/dist/image-config.d-CeDgNyX4.d.mts +53 -0
- package/dist/image-config.d-CeDgNyX4.d.ts +53 -0
- package/dist/image.cjs +9 -18
- package/dist/image.d.mts +39 -0
- package/dist/image.d.ts +39 -0
- package/dist/image.mjs +4 -13
- package/dist/index.cjs +250 -174
- package/dist/index.d-BDaiu2i5.d.mts +54 -0
- package/dist/index.d-BNNDpql4.d.ts +20 -0
- package/dist/index.d-BqcfqJvt.d.mts +20 -0
- package/dist/index.d-nAncqTXz.d.ts +54 -0
- package/dist/index.d.mts +1053 -0
- package/dist/index.d.ts +1053 -0
- package/dist/index.mjs +318 -242
- package/dist/instrumentation-runtime.d-CX9Zh-16.d.mts +22 -0
- package/dist/instrumentation-runtime.d-CX9Zh-16.d.ts +22 -0
- package/dist/instrumentation.cjs +5 -5
- package/dist/instrumentation.d.mts +7 -0
- package/dist/instrumentation.d.ts +7 -0
- package/dist/instrumentation.mjs +4 -4
- package/dist/integration-orm-52GPGTHO.cjs +14 -0
- package/dist/integration-orm-CO23MSFE.mjs +14 -0
- package/dist/integrations.cjs +23 -17
- package/dist/integrations.d.mts +33 -0
- package/dist/integrations.d.ts +33 -0
- package/dist/integrations.mjs +24 -18
- package/dist/internal/app-markdown-runtime.cjs +13 -13
- package/dist/internal/app-markdown-runtime.d.mts +86 -0
- package/dist/internal/app-markdown-runtime.d.ts +86 -0
- package/dist/internal/app-markdown-runtime.mjs +12 -12
- package/dist/internal/build-runtime.cjs +166 -133
- package/dist/internal/build-runtime.d.mts +46 -0
- package/dist/internal/build-runtime.d.ts +46 -0
- package/dist/internal/build-runtime.mjs +154 -121
- package/dist/internal/cli-runtime.cjs +102 -79
- package/dist/internal/cli-runtime.mjs +102 -79
- package/dist/internal/client-error-overlay.cjs +18 -49
- package/dist/internal/client-error-overlay.d.mts +25 -0
- package/dist/internal/client-error-overlay.d.ts +25 -0
- package/dist/internal/client-error-overlay.mjs +14 -45
- package/dist/internal/client-runtime.cjs +73 -59
- package/dist/internal/client-runtime.d.mts +93 -0
- package/dist/internal/client-runtime.d.ts +93 -0
- package/dist/internal/client-runtime.mjs +66 -52
- package/dist/internal/compression-runtime.cjs +4 -4
- package/dist/internal/compression-runtime.d.mts +48 -0
- package/dist/internal/compression-runtime.d.ts +48 -0
- package/dist/internal/compression-runtime.mjs +3 -3
- package/dist/internal/config-runtime.cjs +94 -65
- package/dist/internal/config-runtime.d.mts +336 -0
- package/dist/internal/config-runtime.d.ts +336 -0
- package/dist/internal/config-runtime.mjs +80 -51
- package/dist/internal/desktop-guard.cjs +17 -0
- package/dist/internal/desktop-guard.d.mts +52 -0
- package/dist/internal/desktop-guard.d.ts +52 -0
- package/dist/internal/desktop-guard.mjs +17 -0
- package/dist/internal/docs-precompiled-runtime.cjs +18 -24
- package/dist/internal/docs-precompiled-runtime.d.mts +43 -0
- package/dist/internal/docs-precompiled-runtime.d.ts +43 -0
- package/dist/internal/docs-precompiled-runtime.mjs +14 -20
- package/dist/internal/form-actions-client.cjs +14 -0
- package/dist/internal/form-actions-client.d.mts +5 -0
- package/dist/internal/form-actions-client.d.ts +5 -0
- package/dist/internal/form-actions-client.mjs +14 -0
- package/dist/internal/form-actions.cjs +19 -0
- package/dist/internal/form-actions.d.mts +14 -0
- package/dist/internal/form-actions.d.ts +14 -0
- package/dist/internal/form-actions.mjs +19 -0
- package/dist/internal/infra-analytics-runtime.cjs +22 -8
- package/dist/internal/infra-analytics-runtime.d.mts +16 -0
- package/dist/internal/infra-analytics-runtime.d.ts +16 -0
- package/dist/internal/infra-analytics-runtime.mjs +20 -6
- package/dist/internal/island-codec.cjs +22 -0
- package/dist/internal/island-codec.d.mts +29 -0
- package/dist/internal/island-codec.d.ts +29 -0
- package/dist/internal/island-codec.mjs +22 -0
- package/dist/internal/island-value-store.cjs +10 -0
- package/dist/internal/island-value-store.d.mts +6 -0
- package/dist/internal/island-value-store.d.ts +6 -0
- package/dist/internal/island-value-store.mjs +10 -0
- package/dist/internal/islands-boot.cjs +211 -0
- package/dist/internal/islands-boot.d.mts +8 -0
- package/dist/internal/islands-boot.d.ts +8 -0
- package/dist/internal/islands-boot.mjs +211 -0
- package/dist/internal/islands-runtime.cjs +161 -0
- package/dist/internal/islands-runtime.d.mts +66 -0
- package/dist/internal/islands-runtime.d.ts +66 -0
- package/dist/internal/islands-runtime.mjs +161 -0
- package/dist/internal/islands-server.cjs +16 -0
- package/dist/internal/islands-server.d.mts +3 -0
- package/dist/internal/islands-server.d.ts +3 -0
- package/dist/internal/islands-server.mjs +16 -0
- package/dist/internal/islx-client.cjs +5 -0
- package/dist/internal/islx-client.d.mts +6 -0
- package/dist/internal/islx-client.d.ts +6 -0
- package/dist/internal/islx-client.mjs +3 -0
- package/dist/internal/islx-react.cjs +4 -0
- package/dist/internal/islx-react.d.mts +1 -0
- package/dist/internal/islx-react.d.ts +1 -0
- package/dist/internal/islx-react.mjs +2 -0
- package/dist/internal/islx-server.cjs +5 -0
- package/dist/internal/islx-server.d.mts +2 -0
- package/dist/internal/islx-server.d.ts +2 -0
- package/dist/internal/islx-server.mjs +3 -0
- package/dist/internal/isolated-boundary.cjs +5 -4
- package/dist/internal/isolated-boundary.d.mts +66 -0
- package/dist/internal/isolated-boundary.d.ts +66 -0
- package/dist/internal/isolated-boundary.mjs +4 -3
- package/dist/internal/metadata-image-runtime.cjs +8 -7
- package/dist/internal/metadata-image-runtime.d.mts +30 -0
- package/dist/internal/metadata-image-runtime.d.ts +30 -0
- package/dist/internal/metadata-image-runtime.mjs +7 -6
- package/dist/internal/native-server-fns.cjs +25 -0
- package/dist/internal/native-server-fns.d.mts +42 -0
- package/dist/internal/native-server-fns.d.ts +42 -0
- package/dist/internal/native-server-fns.mjs +25 -0
- package/dist/internal/product-telemetry-runtime.cjs +5 -17
- package/dist/internal/product-telemetry-runtime.d.mts +45 -0
- package/dist/internal/product-telemetry-runtime.d.ts +45 -0
- package/dist/internal/product-telemetry-runtime.mjs +3 -15
- package/dist/internal/production-node-env.cjs +7 -3
- package/dist/internal/production-node-env.d.mts +21 -0
- package/dist/internal/production-node-env.d.ts +21 -0
- package/dist/internal/production-node-env.mjs +6 -2
- package/dist/internal/production-runtime.cjs +178 -90
- package/dist/internal/production-runtime.d.mts +566 -0
- package/dist/internal/production-runtime.d.ts +566 -0
- package/dist/internal/production-runtime.mjs +202 -114
- package/dist/internal/react-cache.cjs +51 -0
- package/dist/internal/react-cache.d.mts +3 -0
- package/dist/internal/react-cache.d.ts +3 -0
- package/dist/internal/react-cache.mjs +51 -0
- package/dist/internal/request-cookies.cjs +3 -3
- package/dist/internal/request-cookies.d.mts +16 -0
- package/dist/internal/request-cookies.d.ts +16 -0
- package/dist/internal/request-cookies.mjs +2 -2
- package/dist/internal/server-fn-transform.cjs +13 -0
- package/dist/internal/server-fn-transform.d.mts +24 -0
- package/dist/internal/server-fn-transform.d.ts +24 -0
- package/dist/internal/server-fn-transform.mjs +13 -0
- package/dist/internal/server-tree.cjs +7 -4
- package/dist/internal/server-tree.d.mts +50 -0
- package/dist/internal/server-tree.d.ts +50 -0
- package/dist/internal/server-tree.mjs +8 -5
- package/dist/island-value-protocol.d-BRayRghM.d.mts +12 -0
- package/dist/island-value-protocol.d-BRayRghM.d.ts +12 -0
- package/dist/island.d-CfGru1MO.d.mts +9 -0
- package/dist/island.d-CfGru1MO.d.ts +9 -0
- package/dist/json-ld.cjs +3 -16
- package/dist/json-ld.d.mts +94 -0
- package/dist/json-ld.d.ts +94 -0
- package/dist/json-ld.mjs +3 -16
- package/dist/layers-DMRXRL7F.cjs +18 -0
- package/dist/layers-T55SA47E.mjs +18 -0
- package/dist/layers.d-CcS42OGR.d.mts +55 -0
- package/dist/layers.d-CcS42OGR.d.ts +55 -0
- package/dist/lifecycle.d-C2aLBOwu.d.mts +176 -0
- package/dist/lifecycle.d-C2aLBOwu.d.ts +176 -0
- package/dist/manager-2LUKNX2N.cjs +14 -0
- package/dist/manager-H5ZM3HAM.mjs +14 -0
- package/dist/markdown.cjs +19 -12
- package/dist/markdown.d.mts +33 -0
- package/dist/markdown.d.ts +33 -0
- package/dist/markdown.mjs +18 -11
- package/dist/middleware.cjs +34 -26
- package/dist/middleware.d.mts +225 -0
- package/dist/middleware.d.ts +225 -0
- package/dist/middleware.mjs +38 -30
- package/dist/mobile.cjs +9 -0
- package/dist/mobile.d.mts +138 -0
- package/dist/mobile.d.ts +138 -0
- package/dist/mobile.mjs +9 -0
- package/dist/modules-KOKD4XS6.mjs +13 -0
- package/dist/modules-QTP7WJPD.cjs +13 -0
- package/dist/native-server-fn-handler-GLRHAYWV.mjs +28 -0
- package/dist/native-server-fn-handler-J5MYRXN6.cjs +28 -0
- package/dist/native-specs-5OLED4MM.cjs +15 -0
- package/dist/native-specs-LDV6IZ4N.mjs +15 -0
- package/dist/native-tree-AS5L3ID3.mjs +27 -0
- package/dist/native-tree-Z2WYUJEV.cjs +27 -0
- package/dist/native.cjs +87 -0
- package/dist/native.d.mts +72 -0
- package/dist/native.d.ts +72 -0
- package/dist/native.mjs +87 -0
- package/dist/navigation-delegate.d-BbUHRXxG.d.ts +29 -0
- package/dist/navigation-delegate.d-CSCm8ZxL.d.mts +29 -0
- package/dist/navigation.cjs +22 -21
- package/dist/navigation.d.mts +51 -0
- package/dist/navigation.d.ts +51 -0
- package/dist/navigation.mjs +21 -20
- package/dist/nitro-DD4QCA66.mjs +650 -0
- package/dist/nitro-VRDX2H4M.cjs +650 -0
- package/dist/node-module-bundle-7JHPPF6B.mjs +11 -0
- package/dist/node-module-bundle-YJGYBOGK.cjs +11 -0
- package/dist/observability.cjs +3 -3
- package/dist/observability.d-B2363jB6.d.mts +448 -0
- package/dist/observability.d-B2363jB6.d.ts +448 -0
- package/dist/observability.d.mts +2 -0
- package/dist/observability.d.ts +2 -0
- package/dist/observability.mjs +2 -2
- package/dist/og.cjs +1 -1
- package/dist/og.d.mts +1 -0
- package/dist/og.d.ts +1 -0
- package/dist/og.mjs +1 -1
- package/dist/params.d-BALtrRim.d.ts +15 -0
- package/dist/params.d-ry-lxqmy.d.mts +15 -0
- package/dist/platform.cjs +29 -0
- package/dist/platform.d.mts +24 -0
- package/dist/platform.d.ts +24 -0
- package/dist/platform.mjs +29 -0
- package/dist/plugin-53SY5YBS.mjs +32 -0
- package/dist/plugin-HZIBL3DW.cjs +32 -0
- package/dist/plugin.cjs +154 -124
- package/dist/plugin.d.mts +58 -0
- package/dist/plugin.d.ts +58 -0
- package/dist/plugin.mjs +137 -107
- package/dist/port-UFUZL6RI.mjs +419 -0
- package/dist/port-VTLHPZOI.cjs +419 -0
- package/dist/production-runtime.d-CcQiDko5.d.mts +123 -0
- package/dist/production-runtime.d-DgT24A0f.d.ts +123 -0
- package/dist/production-vite.d-BQFAlG7n.d.mts +13 -0
- package/dist/production-vite.d-BQFAlG7n.d.ts +13 -0
- package/dist/query/client.cjs +59 -69
- package/dist/query/client.d.mts +61 -0
- package/dist/query/client.d.ts +61 -0
- package/dist/query/client.mjs +51 -61
- package/dist/query/index.cjs +4 -4
- package/dist/query/index.d.mts +90 -0
- package/dist/query/index.d.ts +90 -0
- package/dist/query/index.mjs +3 -3
- package/dist/query/parsers.cjs +3 -3
- package/dist/query/parsers.d.mts +29 -0
- package/dist/query/parsers.d.ts +29 -0
- package/dist/query/parsers.mjs +2 -2
- package/dist/query/server.cjs +5 -11
- package/dist/query/server.d.mts +55 -0
- package/dist/query/server.d.ts +55 -0
- package/dist/query/server.mjs +3 -9
- package/dist/render-plan.d-BH9WF-JZ.d.mts +25 -0
- package/dist/render-plan.d-CyrX6MDs.d.ts +25 -0
- package/dist/renderer/react/client.cjs +1 -1
- package/dist/renderer/react/client.d.mts +3 -0
- package/dist/renderer/react/client.d.ts +3 -0
- package/dist/renderer/react/client.mjs +1 -1
- package/dist/renderer/react/server.cjs +10 -14
- package/dist/renderer/react/server.d.mts +48 -0
- package/dist/renderer/react/server.d.ts +48 -0
- package/dist/renderer/react/server.mjs +12 -16
- package/dist/renderer/react/vite.cjs +1 -4
- package/dist/renderer/react/vite.d.mts +4 -0
- package/dist/renderer/react/vite.d.ts +4 -0
- package/dist/renderer/react/vite.mjs +1 -4
- package/dist/renderer-client.cjs +71 -77
- package/dist/renderer-client.d.mts +126 -0
- package/dist/renderer-client.d.ts +126 -0
- package/dist/renderer-client.mjs +51 -57
- package/dist/renderer.cjs +3 -3
- package/dist/renderer.d.mts +260 -0
- package/dist/renderer.d.ts +260 -0
- package/dist/renderer.mjs +2 -2
- package/dist/request.cjs +4 -4
- package/dist/request.d-BB8M8bcD.d.ts +24 -0
- package/dist/request.d-CUrPnCW7.d.mts +24 -0
- package/dist/request.d.mts +34 -0
- package/dist/request.d.ts +34 -0
- package/dist/request.mjs +3 -3
- package/dist/resolver.d-BHyZgpa7.d.ts +14 -0
- package/dist/resolver.d-JnZKKsc5.d.mts +14 -0
- package/dist/response.d-BolW0Vx_.d.mts +10 -0
- package/dist/response.d-BolW0Vx_.d.ts +10 -0
- package/dist/route-pattern.d-CVsVbq5n.d.mts +13 -0
- package/dist/route-pattern.d-CVsVbq5n.d.ts +13 -0
- package/dist/route-rendering.d-CYxlzaFm.d.mts +44 -0
- package/dist/route-rendering.d-DYqZMIf4.d.ts +44 -0
- package/dist/route.d-BaVH3V0w.d.mts +224 -0
- package/dist/route.d-DBTEqifW.d.ts +224 -0
- package/dist/router.cjs +5 -5
- package/dist/router.d-7o24CD8u.d.mts +50 -0
- package/dist/router.d-DaKo507j.d.ts +50 -0
- package/dist/router.d.mts +36 -0
- package/dist/router.d.ts +36 -0
- package/dist/router.mjs +4 -4
- package/dist/routes.cjs +14 -12
- package/dist/routes.d-BknKQcTu.d.ts +237 -0
- package/dist/routes.d-D1IrO9KK.d.mts +237 -0
- package/dist/routes.d.mts +273 -0
- package/dist/routes.d.ts +273 -0
- package/dist/routes.mjs +13 -11
- package/dist/rsc-pipeline-OF2I7PCX.cjs +83 -0
- package/dist/rsc-pipeline-RFLHDAKD.mjs +83 -0
- package/dist/runtime-LBTK62AD.cjs +1336 -0
- package/dist/runtime-M6UJCSLA.mjs +1336 -0
- package/dist/runtime.d-3iJAKptR.d.mts +28 -0
- package/dist/runtime.d-BtL3PCL3.d.ts +28 -0
- package/dist/runtime.d-CN73a-IL.d.ts +69 -0
- package/dist/runtime.d-CcNuzhX6.d.mts +69 -0
- package/dist/schema-dev-notice-JMXEQWIQ.mjs +54 -0
- package/dist/schema-dev-notice-PLBFDTOF.cjs +54 -0
- package/dist/schema.cjs +3 -3
- package/dist/schema.d.mts +115 -0
- package/dist/schema.d.ts +115 -0
- package/dist/schema.mjs +2 -2
- package/dist/search-client-OXH6GBNO.mjs +15 -0
- package/dist/search-client-ZZLKVO5R.cjs +15 -0
- package/dist/server-action-security.cjs +8 -7
- package/dist/server-action-security.d.mts +45 -0
- package/dist/server-action-security.d.ts +45 -0
- package/dist/server-action-security.mjs +7 -6
- package/dist/server-client-bridge.d-DKWDl5NB.d.mts +7 -0
- package/dist/server-client-bridge.d-DKWDl5NB.d.ts +7 -0
- package/dist/server-fn-client.cjs +4 -4
- package/dist/server-fn-client.d.mts +60 -0
- package/dist/server-fn-client.d.ts +60 -0
- package/dist/server-fn-client.mjs +3 -3
- package/dist/server-fn-error.d-DrcH9cc1.d.mts +26 -0
- package/dist/server-fn-error.d-DrcH9cc1.d.ts +26 -0
- package/dist/server-fn.cjs +15 -14
- package/dist/server-fn.d.mts +192 -0
- package/dist/server-fn.d.ts +192 -0
- package/dist/server-fn.mjs +14 -13
- package/dist/server-plugins.cjs +15 -15
- package/dist/server-plugins.d.mts +65 -0
- package/dist/server-plugins.d.ts +65 -0
- package/dist/server-plugins.mjs +14 -14
- package/dist/server-query-client.cjs +9 -8
- package/dist/server-query-client.d.mts +26 -0
- package/dist/server-query-client.d.ts +26 -0
- package/dist/server-query-client.mjs +8 -7
- package/dist/server-query-runtime.d-DXRNhX_3.d.ts +36 -0
- package/dist/server-query-runtime.d-aP52iuL5.d.mts +36 -0
- package/dist/server-query.cjs +17 -16
- package/dist/server-query.d.mts +46 -0
- package/dist/server-query.d.ts +46 -0
- package/dist/server-query.mjs +16 -15
- package/dist/server.cjs +266 -199
- package/dist/server.d.mts +78 -0
- package/dist/server.d.ts +78 -0
- package/dist/server.mjs +239 -172
- package/dist/session-2Q72D4QV.cjs +23 -0
- package/dist/session-QZXZOPR2.mjs +23 -0
- package/dist/shell-render.d-CG6bPiiA.d.mts +41 -0
- package/dist/shell-render.d-CG6bPiiA.d.ts +41 -0
- package/dist/spa-router.d-CNi77LZm.d.mts +248 -0
- package/dist/spa-router.d-Cvgf5QP4.d.ts +248 -0
- package/dist/storage.cjs +7 -3
- package/dist/storage.d.mts +60 -0
- package/dist/storage.d.ts +60 -0
- package/dist/storage.mjs +6 -2
- package/dist/testing.cjs +59 -76
- package/dist/testing.d.mts +110 -0
- package/dist/testing.d.ts +110 -0
- package/dist/testing.mjs +49 -66
- package/dist/theme/client.cjs +5 -5
- package/dist/theme/client.d.mts +10 -0
- package/dist/theme/client.d.ts +10 -0
- package/dist/theme/client.mjs +4 -4
- package/dist/theme/index.cjs +3 -3
- package/dist/theme/index.d.mts +6 -0
- package/dist/theme/index.d.ts +6 -0
- package/dist/theme/index.mjs +2 -2
- package/dist/theme/runtime.cjs +3 -3
- package/dist/theme/runtime.d.mts +13 -0
- package/dist/theme/runtime.d.ts +13 -0
- package/dist/theme/runtime.mjs +2 -2
- package/dist/theme/server.cjs +8 -8
- package/dist/theme/server.d.mts +8 -0
- package/dist/theme/server.d.ts +8 -0
- package/dist/theme/server.mjs +7 -7
- package/dist/types.d-BnIqOn9w.d.mts +73 -0
- package/dist/types.d-BnIqOn9w.d.ts +73 -0
- package/dist/types.d-C41ePjvP.d.mts +85 -0
- package/dist/types.d-C41ePjvP.d.ts +85 -0
- package/dist/types.d-DQnyD3VD.d.mts +30 -0
- package/dist/types.d-DQnyD3VD.d.ts +30 -0
- package/dist/utils.d-C3H-14_Y.d.ts +54 -0
- package/dist/utils.d-D8VfzZYn.d.mts +54 -0
- package/dist/version.cjs +3 -3
- package/dist/version.d.mts +3 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.mjs +2 -2
- package/dist/vite.cjs +168 -120
- package/dist/vite.d.mts +168 -0
- package/dist/vite.d.ts +168 -0
- package/dist/vite.mjs +155 -107
- package/dist/workflows.cjs +14 -13
- package/dist/workflows.d-CRMzQZ3k.d.mts +188 -0
- package/dist/workflows.d-CRMzQZ3k.d.ts +188 -0
- package/dist/workflows.d.mts +1 -0
- package/dist/workflows.d.ts +1 -0
- package/dist/workflows.mjs +13 -12
- package/package.json +7 -2
- package/dist/agent-mcp-handler-LPJ2CADR.mjs +0 -19
- package/dist/agent-mcp-handler-SJAHFSPI.cjs +0 -19
- package/dist/chunk-23MGIV4X.mjs +0 -579
- package/dist/chunk-27ZWSI3W.cjs +0 -64
- package/dist/chunk-2A3EQHXX.mjs +0 -173
- package/dist/chunk-2CQ74SP6.cjs +0 -13
- package/dist/chunk-2ELDTQRN.mjs +0 -85
- package/dist/chunk-2J7W2WND.mjs +0 -149
- package/dist/chunk-2NNMOPDN.mjs +0 -237
- package/dist/chunk-2PQNJXFM.mjs +0 -20
- package/dist/chunk-2SJ4RQ6P.cjs +0 -57
- package/dist/chunk-2UC36WAC.mjs +0 -22
- package/dist/chunk-2VQKKQ6D.mjs +0 -51
- package/dist/chunk-2Y3JRYVG.mjs +0 -71
- package/dist/chunk-35GKZR22.mjs +0 -157
- package/dist/chunk-3BU22U3M.cjs +0 -237
- package/dist/chunk-3KZS4SUS.mjs +0 -414
- package/dist/chunk-3SDFA7UF.cjs +0 -701
- package/dist/chunk-3TLO7SBY.cjs +0 -240
- package/dist/chunk-3UEVPCGW.mjs +0 -435
- package/dist/chunk-3WNDJT2E.cjs +0 -109
- package/dist/chunk-44SYJEG3.mjs +0 -13
- package/dist/chunk-45ZSJLDT.mjs +0 -183
- package/dist/chunk-4E5AEDKY.mjs +0 -696
- package/dist/chunk-4E5WBPEG.mjs +0 -1157
- package/dist/chunk-4GLOOWKE.mjs +0 -1344
- package/dist/chunk-4JCQDWPX.mjs +0 -24
- package/dist/chunk-4NU4GGTC.cjs +0 -484
- package/dist/chunk-4OOBRCJX.mjs +0 -300
- package/dist/chunk-4PPEPOZZ.cjs +0 -21
- package/dist/chunk-4RB44K6Z.mjs +0 -94
- package/dist/chunk-4SIYUGRY.mjs +0 -93
- package/dist/chunk-4WQ6PGSJ.cjs +0 -367
- package/dist/chunk-4WVJLURN.mjs +0 -417
- package/dist/chunk-4ZFL5GFN.cjs +0 -520
- package/dist/chunk-54UPOYFS.mjs +0 -35
- package/dist/chunk-55YI3RRB.mjs +0 -192
- package/dist/chunk-5I3OT426.cjs +0 -11021
- package/dist/chunk-5QIKR7RR.cjs +0 -224
- package/dist/chunk-5SJWVY6R.mjs +0 -26
- package/dist/chunk-5WI2S4CO.mjs +0 -20
- package/dist/chunk-63H6BKXG.cjs +0 -389
- package/dist/chunk-655RLQQL.mjs +0 -43
- package/dist/chunk-6EODJYCX.cjs +0 -183
- package/dist/chunk-6EXBPJ24.cjs +0 -434
- package/dist/chunk-6MVFL3R5.cjs +0 -506
- package/dist/chunk-6NT6S2VQ.mjs +0 -180
- package/dist/chunk-6QQDAAAZ.cjs +0 -38
- package/dist/chunk-6SJ2KJTA.mjs +0 -314
- package/dist/chunk-6SM5XXFS.cjs +0 -70
- package/dist/chunk-6V4TDWEC.cjs +0 -455
- package/dist/chunk-72ADZ6GQ.cjs +0 -19
- package/dist/chunk-72AK62H5.mjs +0 -55
- package/dist/chunk-75RZHGLS.cjs +0 -135
- package/dist/chunk-77GNHH2Z.cjs +0 -236
- package/dist/chunk-7DBXEASO.cjs +0 -40
- package/dist/chunk-7LTCDQRS.mjs +0 -166
- package/dist/chunk-7W3CPVXS.cjs +0 -24
- package/dist/chunk-A6WIQH5Z.cjs +0 -31
- package/dist/chunk-ADEA7PN3.cjs +0 -1101
- package/dist/chunk-AELACLOB.mjs +0 -47
- package/dist/chunk-AHGECQEW.mjs +0 -49
- package/dist/chunk-AI7QMY7O.cjs +0 -41
- package/dist/chunk-AJQTP4OO.mjs +0 -212
- package/dist/chunk-AMDMVWMI.cjs +0 -39
- package/dist/chunk-ARJWXNQL.cjs +0 -256
- package/dist/chunk-BCMSYSN2.mjs +0 -183
- package/dist/chunk-BIDYX3SL.cjs +0 -91
- package/dist/chunk-BJIYRUGQ.mjs +0 -35
- package/dist/chunk-BJPBQNIE.cjs +0 -2355
- package/dist/chunk-BO36SELV.cjs +0 -395
- package/dist/chunk-BOYNDCZL.mjs +0 -54
- package/dist/chunk-BPMATOP2.cjs +0 -687
- package/dist/chunk-BPOF5U4N.mjs +0 -566
- package/dist/chunk-BRYHOB4X.mjs +0 -18
- package/dist/chunk-BSC7JTOK.mjs +0 -70
- package/dist/chunk-BTHHUD7Q.mjs +0 -51
- package/dist/chunk-BUGNQIHC.mjs +0 -449
- package/dist/chunk-C4NCTZLM.mjs +0 -22
- package/dist/chunk-C4SPBWFM.cjs +0 -26
- package/dist/chunk-C5GUTBZK.cjs +0 -173
- package/dist/chunk-CBBLJMR5.mjs +0 -74
- package/dist/chunk-CBJJH36A.cjs +0 -2187
- package/dist/chunk-CGBDNNSM.cjs +0 -664
- package/dist/chunk-CI6E3UOH.cjs +0 -314
- package/dist/chunk-CMGMGHUZ.cjs +0 -27
- package/dist/chunk-CNOQY6Z7.mjs +0 -156
- package/dist/chunk-CQ6OSQ3K.mjs +0 -36
- package/dist/chunk-CU625VAY.mjs +0 -13
- package/dist/chunk-CVOSWIQA.mjs +0 -15300
- package/dist/chunk-CXEN47J3.mjs +0 -550
- package/dist/chunk-CXP5U3RW.cjs +0 -54
- package/dist/chunk-D227TIEN.cjs +0 -1114
- package/dist/chunk-D2BB47NB.cjs +0 -157
- package/dist/chunk-D2ULAULS.cjs +0 -166
- package/dist/chunk-D7JTOLFK.cjs +0 -285
- package/dist/chunk-DAATZTKJ.mjs +0 -220
- package/dist/chunk-DAO7JGTS.mjs +0 -73
- package/dist/chunk-DQQOKWYA.cjs +0 -42
- package/dist/chunk-DTSROJ5J.mjs +0 -367
- package/dist/chunk-DVM4FKZL.cjs +0 -169
- package/dist/chunk-DZ5ZVB2K.cjs +0 -9
- package/dist/chunk-E2ROOWQC.cjs +0 -2225
- package/dist/chunk-E3UK5IIB.cjs +0 -593
- package/dist/chunk-E5GNDG5F.mjs +0 -701
- package/dist/chunk-EA5K5BKU.mjs +0 -455
- package/dist/chunk-ECKF2BAM.cjs +0 -403
- package/dist/chunk-EK4QAEFZ.cjs +0 -550
- package/dist/chunk-EMLAPBEM.mjs +0 -256
- package/dist/chunk-ENLZ4R3Y.mjs +0 -55
- package/dist/chunk-EUV4YR3V.cjs +0 -1362
- package/dist/chunk-EWET4D2Y.mjs +0 -395
- package/dist/chunk-EZDQRNQ7.mjs +0 -1496
- package/dist/chunk-F2SE2VDO.mjs +0 -65
- package/dist/chunk-F3LTXB63.mjs +0 -40
- package/dist/chunk-F3VB7ONA.mjs +0 -338
- package/dist/chunk-F5QO4FNE.mjs +0 -664
- package/dist/chunk-FA2W42OV.mjs +0 -25
- package/dist/chunk-FDR64H6B.mjs +0 -140
- package/dist/chunk-FFFW3OQ7.cjs +0 -65
- package/dist/chunk-FJ3M4CUX.cjs +0 -46
- package/dist/chunk-FK6GO24V.cjs +0 -54
- package/dist/chunk-FNO7A7CM.cjs +0 -1496
- package/dist/chunk-FO427P6I.cjs +0 -392
- package/dist/chunk-FP2INE7H.mjs +0 -113
- package/dist/chunk-FUZEBRP3.mjs +0 -593
- package/dist/chunk-FZ6YYU2W.mjs +0 -65
- package/dist/chunk-G2KY33I6.mjs +0 -202
- package/dist/chunk-G4MWPDSE.mjs +0 -19
- package/dist/chunk-G643DQCH.cjs +0 -13
- package/dist/chunk-G7HXGLEC.cjs +0 -175
- package/dist/chunk-GC3SUL6M.mjs +0 -109
- package/dist/chunk-GCXWJJKH.mjs +0 -169
- package/dist/chunk-GHFS7RUB.mjs +0 -152
- package/dist/chunk-GQ3Z3IZI.cjs +0 -241
- package/dist/chunk-H4AMB6ZE.mjs +0 -421
- package/dist/chunk-H77NVNJ2.mjs +0 -57
- package/dist/chunk-HALDNTIV.mjs +0 -2225
- package/dist/chunk-HITLGIAO.cjs +0 -55
- package/dist/chunk-HLJ6MBUZ.cjs +0 -183
- package/dist/chunk-HOXTWRGB.mjs +0 -484
- package/dist/chunk-HREOKQWT.cjs +0 -45
- package/dist/chunk-I2BHUNBU.mjs +0 -14
- package/dist/chunk-I57LW5VZ.cjs +0 -94
- package/dist/chunk-IE7XCHH3.cjs +0 -85
- package/dist/chunk-IHNIDL6H.cjs +0 -772
- package/dist/chunk-IK6LVLKC.cjs +0 -51
- package/dist/chunk-IOEH4VWN.mjs +0 -202
- package/dist/chunk-IWZKTWHZ.cjs +0 -435
- package/dist/chunk-IZY3V5XW.mjs +0 -23
- package/dist/chunk-J63ZH5OQ.cjs +0 -62
- package/dist/chunk-J7FSKED3.cjs +0 -93
- package/dist/chunk-JBSVKMC5.mjs +0 -28
- package/dist/chunk-JDNHKPTD.cjs +0 -22
- package/dist/chunk-JG6DJF5A.mjs +0 -238
- package/dist/chunk-JGLC4TO3.cjs +0 -192
- package/dist/chunk-JM5XPKWH.mjs +0 -41
- package/dist/chunk-JNUWCDTF.cjs +0 -1344
- package/dist/chunk-JNZ4TDWM.mjs +0 -445
- package/dist/chunk-JPLUGGRV.mjs +0 -230
- package/dist/chunk-JSROZYYO.cjs +0 -164
- package/dist/chunk-KCMTCM6I.cjs +0 -53
- package/dist/chunk-KGB5UXJJ.mjs +0 -27
- package/dist/chunk-KGZIORNL.cjs +0 -43
- package/dist/chunk-KI3MESHB.mjs +0 -224
- package/dist/chunk-KIIMAWOJ.cjs +0 -505
- package/dist/chunk-KMTGADN3.mjs +0 -95
- package/dist/chunk-KN7K4VQN.mjs +0 -236
- package/dist/chunk-KNBBQHO2.cjs +0 -51
- package/dist/chunk-KR6CKSXT.cjs +0 -15
- package/dist/chunk-KXWRO25S.cjs +0 -85
- package/dist/chunk-L3KT7IXV.mjs +0 -91
- package/dist/chunk-LCCBO7PJ.cjs +0 -46
- package/dist/chunk-LIUGYUX3.cjs +0 -22
- package/dist/chunk-LPEX4YW6.mjs +0 -13
- package/dist/chunk-LSKZMJMP.cjs +0 -65
- package/dist/chunk-LSZAVSGY.mjs +0 -1101
- package/dist/chunk-LTNGXMQ6.cjs +0 -55
- package/dist/chunk-LYLEZIG3.cjs +0 -73
- package/dist/chunk-LYV44OIR.mjs +0 -256
- package/dist/chunk-M2L4MYDQ.cjs +0 -14
- package/dist/chunk-M7MKQXAF.cjs +0 -87
- package/dist/chunk-MKYBIIAQ.mjs +0 -2187
- package/dist/chunk-MQ3H6LT5.cjs +0 -202
- package/dist/chunk-MRMI32SN.cjs +0 -1157
- package/dist/chunk-MSSFIQGM.mjs +0 -1002
- package/dist/chunk-MT763TDW.cjs +0 -43
- package/dist/chunk-MVL2RAJW.mjs +0 -62
- package/dist/chunk-MWSK6C4J.cjs +0 -18
- package/dist/chunk-MWWVKDW3.cjs +0 -169
- package/dist/chunk-N2NAS2AM.cjs +0 -725
- package/dist/chunk-N46M65CI.mjs +0 -54
- package/dist/chunk-N4UOK6ZI.cjs +0 -256
- package/dist/chunk-NI2TCCTG.mjs +0 -11020
- package/dist/chunk-NO3WWW3N.cjs +0 -192
- package/dist/chunk-NPC7VWJE.mjs +0 -277
- package/dist/chunk-NRDBW4MP.mjs +0 -45
- package/dist/chunk-NRSN7G7E.mjs +0 -42
- package/dist/chunk-NYJMY3JA.cjs +0 -156
- package/dist/chunk-NZKJGRB3.cjs +0 -230
- package/dist/chunk-O6BCQV2T.mjs +0 -46
- package/dist/chunk-O6I6VWKK.mjs +0 -493
- package/dist/chunk-O6WAEAX3.mjs +0 -2028
- package/dist/chunk-O7BH5O46.mjs +0 -175
- package/dist/chunk-OFZUJMCU.mjs +0 -601
- package/dist/chunk-OHLSEQ57.mjs +0 -910
- package/dist/chunk-OHY2ZWUG.cjs +0 -25
- package/dist/chunk-OI6CMLWX.cjs +0 -47
- package/dist/chunk-ONUEYC6N.mjs +0 -27
- package/dist/chunk-OO7GXVSR.mjs +0 -9
- package/dist/chunk-OT6ZEW74.mjs +0 -139
- package/dist/chunk-OTC5BDGO.mjs +0 -687
- package/dist/chunk-OX6O6WVA.cjs +0 -74
- package/dist/chunk-OYEUREB6.cjs +0 -35
- package/dist/chunk-OZVEHHMA.cjs +0 -194
- package/dist/chunk-P5TJO5IS.mjs +0 -240
- package/dist/chunk-PCOTGFSM.cjs +0 -139
- package/dist/chunk-PNGWZFUQ.mjs +0 -39
- package/dist/chunk-PSV6XKPO.cjs +0 -220
- package/dist/chunk-PTZ2TVNE.cjs +0 -178
- package/dist/chunk-PZNL3WEG.mjs +0 -772
- package/dist/chunk-PZYCPSCC.cjs +0 -35
- package/dist/chunk-Q2KB32T4.mjs +0 -690
- package/dist/chunk-Q5B3KJBP.cjs +0 -152
- package/dist/chunk-QBK2AA4U.cjs +0 -445
- package/dist/chunk-QCFBDFRS.mjs +0 -169
- package/dist/chunk-QCVE2OCI.cjs +0 -169
- package/dist/chunk-QE6VAKLT.mjs +0 -85
- package/dist/chunk-QNPEUFHQ.cjs +0 -27
- package/dist/chunk-QORUJDIV.mjs +0 -46
- package/dist/chunk-QV4VE2OW.mjs +0 -166
- package/dist/chunk-QVKYGNVM.mjs +0 -27
- package/dist/chunk-QVYLBY73.mjs +0 -93
- package/dist/chunk-R3DS7A2T.mjs +0 -21
- package/dist/chunk-R5A5KNVX.cjs +0 -20
- package/dist/chunk-R5JIFR6B.cjs +0 -42
- package/dist/chunk-RHAZ22ZN.mjs +0 -87
- package/dist/chunk-RKPDESVW.cjs +0 -15301
- package/dist/chunk-RSOJ7DRT.mjs +0 -506
- package/dist/chunk-S3A45T7F.cjs +0 -166
- package/dist/chunk-S3FNNQHR.mjs +0 -31
- package/dist/chunk-S3JO3N4H.cjs +0 -17
- package/dist/chunk-S67OYZU7.mjs +0 -711
- package/dist/chunk-S6VYG6XU.cjs +0 -493
- package/dist/chunk-SAXPH6G5.mjs +0 -169
- package/dist/chunk-SC2WYWPF.mjs +0 -241
- package/dist/chunk-SDOTRX3V.cjs +0 -690
- package/dist/chunk-SEJ5N6SL.mjs +0 -38
- package/dist/chunk-SFGWNC43.mjs +0 -97
- package/dist/chunk-SHB3GYXI.mjs +0 -285
- package/dist/chunk-SHLXACIO.cjs +0 -95
- package/dist/chunk-SJNMVDDF.cjs +0 -86
- package/dist/chunk-SK35NQKK.cjs +0 -27
- package/dist/chunk-SKNL7VA2.mjs +0 -42
- package/dist/chunk-SLQCDJSO.mjs +0 -18
- package/dist/chunk-SOR334EB.cjs +0 -149
- package/dist/chunk-SU7MH53P.cjs +0 -180
- package/dist/chunk-SVRTJOUF.cjs +0 -113
- package/dist/chunk-SYQ3MOWW.cjs +0 -73
- package/dist/chunk-T4OGRVNS.mjs +0 -392
- package/dist/chunk-T5OJPTVN.cjs +0 -417
- package/dist/chunk-TE2G5ION.cjs +0 -2028
- package/dist/chunk-TFQG7TBC.mjs +0 -43
- package/dist/chunk-TIWHTW3Q.cjs +0 -24
- package/dist/chunk-TKJZFIML.cjs +0 -20
- package/dist/chunk-TKSCR644.cjs +0 -414
- package/dist/chunk-TVGP4BBZ.mjs +0 -45
- package/dist/chunk-U4KT7QP3.cjs +0 -23
- package/dist/chunk-UDNPLXW7.mjs +0 -86
- package/dist/chunk-UFDAAQFX.cjs +0 -169
- package/dist/chunk-UFDV5N3C.cjs +0 -711
- package/dist/chunk-UH6QN5NL.mjs +0 -178
- package/dist/chunk-UP4CW6WP.mjs +0 -169
- package/dist/chunk-UQZ4AYTH.cjs +0 -168
- package/dist/chunk-US2QVW3E.cjs +0 -36
- package/dist/chunk-UVW64BCB.cjs +0 -910
- package/dist/chunk-UWPLULNK.mjs +0 -520
- package/dist/chunk-UXFQ3UDA.cjs +0 -140
- package/dist/chunk-UYIHRDE4.cjs +0 -97
- package/dist/chunk-V2FTMRS7.mjs +0 -223
- package/dist/chunk-VB6UCX3V.cjs +0 -421
- package/dist/chunk-VEKFLAQM.cjs +0 -300
- package/dist/chunk-VILIPRS6.mjs +0 -725
- package/dist/chunk-VQLJWDVW.cjs +0 -696
- package/dist/chunk-W3B4PKAW.mjs +0 -28
- package/dist/chunk-W4E7WMXE.cjs +0 -71
- package/dist/chunk-W7LF2J2S.mjs +0 -64
- package/dist/chunk-WBKEZXWE.cjs +0 -449
- package/dist/chunk-WC5UV2HQ.cjs +0 -212
- package/dist/chunk-WMAPPDMM.cjs +0 -28
- package/dist/chunk-WMOGFOUJ.cjs +0 -223
- package/dist/chunk-WNSDDRNU.mjs +0 -24
- package/dist/chunk-WWFTAUFG.cjs +0 -45
- package/dist/chunk-WWIKMBRN.mjs +0 -1362
- package/dist/chunk-XCMCS4DA.mjs +0 -1114
- package/dist/chunk-XJJVLDM6.mjs +0 -194
- package/dist/chunk-XJXBIP67.cjs +0 -277
- package/dist/chunk-XNPDONUH.mjs +0 -389
- package/dist/chunk-XSIRSMAS.cjs +0 -339
- package/dist/chunk-XZNTNMHT.mjs +0 -15
- package/dist/chunk-Y5SJM2W7.cjs +0 -579
- package/dist/chunk-YDQZGSDS.mjs +0 -2355
- package/dist/chunk-YFILVET3.mjs +0 -192
- package/dist/chunk-YFPGHF5F.cjs +0 -202
- package/dist/chunk-YHOCRI4H.mjs +0 -434
- package/dist/chunk-YJRZR7VU.cjs +0 -28
- package/dist/chunk-YKX5BK66.cjs +0 -46
- package/dist/chunk-YOZYCI6Z.mjs +0 -73
- package/dist/chunk-YSCV4SJF.cjs +0 -49
- package/dist/chunk-YSLWRWWP.cjs +0 -601
- package/dist/chunk-YWMZUGIS.mjs +0 -403
- package/dist/chunk-YWN746US.cjs +0 -1002
- package/dist/chunk-YX3DBN4M.cjs +0 -18
- package/dist/chunk-Z2HLU4IX.cjs +0 -238
- package/dist/chunk-Z2RZJZIZ.mjs +0 -168
- package/dist/chunk-Z3HATSKO.mjs +0 -46
- package/dist/chunk-ZEG3OPIB.cjs +0 -93
- package/dist/chunk-ZLAT2CWY.mjs +0 -135
- package/dist/chunk-ZMMBIVQM.mjs +0 -505
- package/dist/chunk-ZMSZZXOR.mjs +0 -164
- package/dist/chunk-ZWM5KGAA.cjs +0 -566
- package/dist/chunk-ZZSRYEYU.mjs +0 -53
- package/dist/devtools-ERIKFEXX.mjs +0 -472
- package/dist/devtools-JZJJY5CK.cjs +0 -472
- package/dist/devtools-client-CXQ6PXI6.cjs +0 -254
- package/dist/devtools-client-HJS2T34Y.mjs +0 -254
- package/dist/devtools-ui-5GBDIGMK.cjs +0 -1296
- package/dist/devtools-ui-5KDAVPIF.mjs +0 -1296
- package/dist/integration-orm-55F7CII5.cjs +0 -13
- package/dist/integration-orm-KV5B3BGZ.mjs +0 -13
- package/dist/layers-UTB43B7A.mjs +0 -18
- package/dist/layers-VUWIOFEO.cjs +0 -18
- package/dist/manager-RT733VRK.mjs +0 -14
- package/dist/manager-XZ5TX7AO.cjs +0 -14
- package/dist/nitro-7F65EZZS.cjs +0 -653
- package/dist/nitro-MPZJGPXK.mjs +0 -653
- package/dist/node-module-bundle-L5L7JCZ4.mjs +0 -11
- package/dist/node-module-bundle-VAFZOXMJ.cjs +0 -11
- package/dist/schema-dev-notice-O67CPXJ6.mjs +0 -56
- package/dist/schema-dev-notice-Y7MQEFGN.cjs +0 -56
- package/dist/search-client-G3RICOFU.cjs +0 -13
- package/dist/search-client-KR7YRIVR.mjs +0 -13
|
@@ -0,0 +1,1291 @@
|
|
|
1
|
+
import {
|
|
2
|
+
resolveFarmAuthConfig,
|
|
3
|
+
resolveFarmAuthIntegration,
|
|
4
|
+
resolveFarmDevIndicatorsConfig,
|
|
5
|
+
resolveFarmServerComponentsMode,
|
|
6
|
+
setFarmProjectSourceDir
|
|
7
|
+
} from "./chunk-PAKCHVUS.mjs";
|
|
8
|
+
import {
|
|
9
|
+
normalizeRouteRules,
|
|
10
|
+
routeRulesToHeaders,
|
|
11
|
+
routeRulesToRedirects
|
|
12
|
+
} from "./chunk-X3XUZWRB.mjs";
|
|
13
|
+
import {
|
|
14
|
+
assertPluginDependencies
|
|
15
|
+
} from "./chunk-XR2ZIBQK.mjs";
|
|
16
|
+
import {
|
|
17
|
+
resolveFarmDevtoolsConfig
|
|
18
|
+
} from "./chunk-CU5SYTJG.mjs";
|
|
19
|
+
import {
|
|
20
|
+
isReactRenderer,
|
|
21
|
+
resolveFarmRenderer
|
|
22
|
+
} from "./chunk-ES2LD2YD.mjs";
|
|
23
|
+
import {
|
|
24
|
+
resolveFarmAgentCrawlers,
|
|
25
|
+
resolveFarmAgentSitemap,
|
|
26
|
+
resolveFarmNoindexPreviews,
|
|
27
|
+
resolveFarmPerformanceConfig
|
|
28
|
+
} from "./chunk-T4TBK5NY.mjs";
|
|
29
|
+
import {
|
|
30
|
+
farmCspBlocksFrameworkInlineScripts,
|
|
31
|
+
getFarmSecurityHeader,
|
|
32
|
+
resolveFarmSecurityConfig
|
|
33
|
+
} from "./chunk-22W4FNTG.mjs";
|
|
34
|
+
import {
|
|
35
|
+
resolveFarmAppManifestConfig
|
|
36
|
+
} from "./chunk-2WZTGPK6.mjs";
|
|
37
|
+
import {
|
|
38
|
+
resolveFarmLlmsTxtConfig
|
|
39
|
+
} from "./chunk-KVW2M6PI.mjs";
|
|
40
|
+
import {
|
|
41
|
+
loadFarmConfigFile,
|
|
42
|
+
resolveFarmLayers
|
|
43
|
+
} from "./chunk-52Y3C3HG.mjs";
|
|
44
|
+
import {
|
|
45
|
+
resolveFarmImageConfig
|
|
46
|
+
} from "./chunk-2NGZFOKG.mjs";
|
|
47
|
+
import {
|
|
48
|
+
resolveEnv,
|
|
49
|
+
setEnv
|
|
50
|
+
} from "./chunk-N33DLJBC.mjs";
|
|
51
|
+
import {
|
|
52
|
+
resolveMdxConfig
|
|
53
|
+
} from "./chunk-UIJOLBUL.mjs";
|
|
54
|
+
import {
|
|
55
|
+
resolveMarkdownConfig
|
|
56
|
+
} from "./chunk-YSXTNSXS.mjs";
|
|
57
|
+
import {
|
|
58
|
+
bundleNodeModule
|
|
59
|
+
} from "./chunk-VFXE6NWR.mjs";
|
|
60
|
+
import {
|
|
61
|
+
resolveWorkflowsConfig
|
|
62
|
+
} from "./chunk-TZVUF5JJ.mjs";
|
|
63
|
+
import {
|
|
64
|
+
FARM_CRON_NAME_SEGMENT_PATTERN,
|
|
65
|
+
normalizeCronExpression,
|
|
66
|
+
resolveCronConfig
|
|
67
|
+
} from "./chunk-DQF3QLOH.mjs";
|
|
68
|
+
import {
|
|
69
|
+
resolveServerActionsConfig
|
|
70
|
+
} from "./chunk-E46NXBNJ.mjs";
|
|
71
|
+
import {
|
|
72
|
+
resolveFarmThemeConfig
|
|
73
|
+
} from "./chunk-YWPNIYUP.mjs";
|
|
74
|
+
import {
|
|
75
|
+
resolveIntegrationPlugins
|
|
76
|
+
} from "./chunk-TGULJSHD.mjs";
|
|
77
|
+
import {
|
|
78
|
+
compileMiddlewareConfig
|
|
79
|
+
} from "./chunk-EDPENAVO.mjs";
|
|
80
|
+
import {
|
|
81
|
+
resolveFarmI18nConfig
|
|
82
|
+
} from "./chunk-MU5V7XHL.mjs";
|
|
83
|
+
import {
|
|
84
|
+
logger
|
|
85
|
+
} from "./chunk-JSDV2NUN.mjs";
|
|
86
|
+
import {
|
|
87
|
+
resolveFarmServerConfig
|
|
88
|
+
} from "./chunk-QDWMCFTH.mjs";
|
|
89
|
+
import {
|
|
90
|
+
resolveFarmAPIConfig
|
|
91
|
+
} from "./chunk-W6QLRQ3V.mjs";
|
|
92
|
+
import {
|
|
93
|
+
normalizeFarmDeploymentId
|
|
94
|
+
} from "./chunk-UAQD67HM.mjs";
|
|
95
|
+
import {
|
|
96
|
+
validateConfigRouteSource
|
|
97
|
+
} from "./chunk-ONG4RDW3.mjs";
|
|
98
|
+
import {
|
|
99
|
+
isFarmRedirectStatus
|
|
100
|
+
} from "./chunk-JNYFXL7X.mjs";
|
|
101
|
+
import {
|
|
102
|
+
normalizeFarmConfigBasePath
|
|
103
|
+
} from "./chunk-SF3JB56B.mjs";
|
|
104
|
+
|
|
105
|
+
// src/mcp-config.ts
|
|
106
|
+
import { createRequire } from "module";
|
|
107
|
+
import path from "path";
|
|
108
|
+
import { pathToFileURL } from "url";
|
|
109
|
+
function resolveFarmMCPConfig(input) {
|
|
110
|
+
if (input === false || input === void 0) return { enabled: false };
|
|
111
|
+
if (!input || typeof input !== "object" || Array.isArray(input)) {
|
|
112
|
+
throw new TypeError("mcp must be a configuration object or false.");
|
|
113
|
+
}
|
|
114
|
+
return { ...input, enabled: input.enabled !== false };
|
|
115
|
+
}
|
|
116
|
+
async function resolveFarmMCPPlugin(config, options) {
|
|
117
|
+
if (!config.enabled) return void 0;
|
|
118
|
+
const root = path.resolve(options.root);
|
|
119
|
+
let modulePath;
|
|
120
|
+
try {
|
|
121
|
+
const resolveFromApp = createRequire(path.join(root, "package.json"));
|
|
122
|
+
modulePath = resolveFromApp.resolve("@farm.js/mcp/internal");
|
|
123
|
+
} catch {
|
|
124
|
+
throw new Error(
|
|
125
|
+
"The `mcp` config requires @farm.js/mcp. Install it with `pnpm add @farm.js/mcp` and try again."
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
const runtime = await import(
|
|
129
|
+
/* @vite-ignore */
|
|
130
|
+
pathToFileURL(modulePath).href
|
|
131
|
+
);
|
|
132
|
+
if (typeof runtime.createFarmMCPPlugin !== "function") {
|
|
133
|
+
throw new Error(
|
|
134
|
+
"The installed @farm.js/mcp package is incompatible with this version of @farm.js/core."
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
return runtime.createFarmMCPPlugin(config);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// src/cron-scan.ts
|
|
141
|
+
var LANGS = {
|
|
142
|
+
ts: "ts",
|
|
143
|
+
tsx: "tsx",
|
|
144
|
+
js: "jsx",
|
|
145
|
+
jsx: "jsx"
|
|
146
|
+
};
|
|
147
|
+
var parseAst;
|
|
148
|
+
async function loadParseAst() {
|
|
149
|
+
if (!parseAst) {
|
|
150
|
+
const { createRequire: createRequire3 } = await import("module");
|
|
151
|
+
parseAst = createRequire3(typeof __filename === "string" ? __filename : import.meta.url)(
|
|
152
|
+
"rolldown/parseAst"
|
|
153
|
+
).parseAst;
|
|
154
|
+
}
|
|
155
|
+
return parseAst;
|
|
156
|
+
}
|
|
157
|
+
function unwrap(node) {
|
|
158
|
+
while (node.type === "TSAsExpression" || node.type === "TSSatisfiesExpression" || node.type === "TSNonNullExpression" || node.type === "ParenthesizedExpression") {
|
|
159
|
+
node = node.expression;
|
|
160
|
+
}
|
|
161
|
+
return node;
|
|
162
|
+
}
|
|
163
|
+
function* walkNodes(value) {
|
|
164
|
+
if (!value || typeof value !== "object") return;
|
|
165
|
+
if (Array.isArray(value)) {
|
|
166
|
+
for (const item of value) yield* walkNodes(item);
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
const node = value;
|
|
170
|
+
if (typeof node.type === "string") yield node;
|
|
171
|
+
for (const key of Object.keys(node)) {
|
|
172
|
+
if (key === "type" || key === "start" || key === "end" || key === "loc" || key === "range") {
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
yield* walkNodes(node[key]);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
function notLiteral(file, key) {
|
|
179
|
+
throw new TypeError(
|
|
180
|
+
`The \`${key}\` option of cronRoute() in ${file} is not a literal. The build reads scheduling options from the source without running the module, so write \`${key}\` out literally or move the job to the \`cron\` config in farm.config.ts.`
|
|
181
|
+
);
|
|
182
|
+
}
|
|
183
|
+
function literalValue(node, file, key) {
|
|
184
|
+
if (!node) notLiteral(file, key);
|
|
185
|
+
switch (node.type) {
|
|
186
|
+
case "Literal":
|
|
187
|
+
if (node.regex || typeof node.value === "bigint") notLiteral(file, key);
|
|
188
|
+
return node.value;
|
|
189
|
+
case "TemplateLiteral":
|
|
190
|
+
if (node.expressions.length > 0) notLiteral(file, key);
|
|
191
|
+
return node.quasis[0]?.value?.cooked ?? notLiteral(file, key);
|
|
192
|
+
case "UnaryExpression":
|
|
193
|
+
if (node.operator === "-" && node.argument.type === "Literal" && typeof node.argument.value === "number") {
|
|
194
|
+
return -node.argument.value;
|
|
195
|
+
}
|
|
196
|
+
notLiteral(file, key);
|
|
197
|
+
break;
|
|
198
|
+
case "ArrayExpression": {
|
|
199
|
+
const items = [];
|
|
200
|
+
for (const element of node.elements) {
|
|
201
|
+
if (!element || element.type === "SpreadElement") notLiteral(file, key);
|
|
202
|
+
items.push(literalValue(unwrap(element), file, key));
|
|
203
|
+
}
|
|
204
|
+
return items;
|
|
205
|
+
}
|
|
206
|
+
case "ObjectExpression": {
|
|
207
|
+
const object = {};
|
|
208
|
+
for (const property of node.properties) {
|
|
209
|
+
if (property.type !== "Property" || property.computed || property.kind !== "init") {
|
|
210
|
+
notLiteral(file, key);
|
|
211
|
+
}
|
|
212
|
+
const propertyKey = property.key.type === "Identifier" ? property.key.name : property.key.value;
|
|
213
|
+
if (typeof propertyKey !== "string" || propertyKey === "__proto__") notLiteral(file, key);
|
|
214
|
+
object[propertyKey] = literalValue(unwrap(property.value), file, key);
|
|
215
|
+
}
|
|
216
|
+
return object;
|
|
217
|
+
}
|
|
218
|
+
case "TSAsExpression":
|
|
219
|
+
case "TSSatisfiesExpression":
|
|
220
|
+
case "TSNonNullExpression":
|
|
221
|
+
case "ParenthesizedExpression":
|
|
222
|
+
return literalValue(node.expression, file, key);
|
|
223
|
+
}
|
|
224
|
+
notLiteral(file, key);
|
|
225
|
+
}
|
|
226
|
+
function optionProperty(object, name) {
|
|
227
|
+
return object.properties.find(
|
|
228
|
+
(entry) => entry.type === "Property" && !entry.computed && (entry.key.name === name || entry.key.value === name)
|
|
229
|
+
)?.value;
|
|
230
|
+
}
|
|
231
|
+
function cronRouteLocalNames(program) {
|
|
232
|
+
const locals = /* @__PURE__ */ new Set();
|
|
233
|
+
for (const statement of program.body) {
|
|
234
|
+
if (statement.type !== "ImportDeclaration") continue;
|
|
235
|
+
for (const specifier of statement.specifiers) {
|
|
236
|
+
if (specifier.type !== "ImportSpecifier") continue;
|
|
237
|
+
const imported = specifier.imported?.name ?? specifier.imported?.value;
|
|
238
|
+
if (imported === "cronRoute") locals.add(specifier.local.name);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return locals;
|
|
242
|
+
}
|
|
243
|
+
function scannedJobFromOptions(optionsNode, file, routePath) {
|
|
244
|
+
const scheduleNode = optionProperty(optionsNode, "schedule");
|
|
245
|
+
if (!scheduleNode) return null;
|
|
246
|
+
if (optionsNode.properties.some((entry) => entry.type === "SpreadElement")) {
|
|
247
|
+
throw new TypeError(
|
|
248
|
+
`The cronRoute() options in ${file} spread another object next to \`schedule\`, so the build cannot read the job statically. Write every scheduling option literally in the call.`
|
|
249
|
+
);
|
|
250
|
+
}
|
|
251
|
+
const read = (key) => {
|
|
252
|
+
const node = optionProperty(optionsNode, key);
|
|
253
|
+
return node === void 0 ? void 0 : literalValue(unwrap(node), file, key);
|
|
254
|
+
};
|
|
255
|
+
const name = readScannedName(read("name"), file, routePath);
|
|
256
|
+
const schedule = readScannedSchedule(read("schedule"), file, name);
|
|
257
|
+
const description = read("description");
|
|
258
|
+
if (description !== void 0 && typeof description !== "string") {
|
|
259
|
+
throw new TypeError(
|
|
260
|
+
`The \`description\` option of cronRoute() in ${file} must be a string literal.`
|
|
261
|
+
);
|
|
262
|
+
}
|
|
263
|
+
const timeoutMs = read("timeoutMs");
|
|
264
|
+
if (timeoutMs !== void 0 && (typeof timeoutMs !== "number" || !Number.isFinite(timeoutMs) || timeoutMs <= 0)) {
|
|
265
|
+
throw new TypeError(
|
|
266
|
+
`The \`timeoutMs\` option of cronRoute() in ${file} must be a positive number literal in milliseconds.`
|
|
267
|
+
);
|
|
268
|
+
}
|
|
269
|
+
const enabled = read("enabled");
|
|
270
|
+
if (enabled !== void 0 && typeof enabled !== "boolean") {
|
|
271
|
+
throw new TypeError(
|
|
272
|
+
`The \`enabled\` option of cronRoute() in ${file} must be \`true\` or \`false\`.`
|
|
273
|
+
);
|
|
274
|
+
}
|
|
275
|
+
const input = read("input");
|
|
276
|
+
return {
|
|
277
|
+
name,
|
|
278
|
+
schedule,
|
|
279
|
+
path: routePath,
|
|
280
|
+
...typeof description === "string" && description.trim() ? { description: description.trim() } : {},
|
|
281
|
+
...input !== void 0 ? { input } : {},
|
|
282
|
+
...timeoutMs !== void 0 ? { timeoutMs } : {},
|
|
283
|
+
filePath: file,
|
|
284
|
+
enabled: enabled !== false
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
function readScannedName(value, file, routePath) {
|
|
288
|
+
if (value === void 0) {
|
|
289
|
+
const defaultName = routePath === "/api" ? "" : routePath.slice("/api/".length);
|
|
290
|
+
if (!defaultName) {
|
|
291
|
+
throw new TypeError(
|
|
292
|
+
`The scheduled cronRoute() in ${file} sits at the \`/api\` root, which has no default job name. Set the \`name\` option.`
|
|
293
|
+
);
|
|
294
|
+
}
|
|
295
|
+
return defaultName;
|
|
296
|
+
}
|
|
297
|
+
if (typeof value !== "string" || value.length === 0) {
|
|
298
|
+
throw new TypeError(
|
|
299
|
+
`The \`name\` option of cronRoute() in ${file} must be a non-empty string literal.`
|
|
300
|
+
);
|
|
301
|
+
}
|
|
302
|
+
if (!value.split("/").every((segment) => FARM_CRON_NAME_SEGMENT_PATTERN.test(segment))) {
|
|
303
|
+
throw new TypeError(
|
|
304
|
+
`The \`name\` option ${JSON.stringify(value)} of cronRoute() in ${file} is invalid. Each "/"-separated segment must start with a letter or number and contain only letters, numbers, dots, underscores, or hyphens.`
|
|
305
|
+
);
|
|
306
|
+
}
|
|
307
|
+
return value;
|
|
308
|
+
}
|
|
309
|
+
function readScannedSchedule(value, file, name) {
|
|
310
|
+
const raw = Array.isArray(value) ? value : [value];
|
|
311
|
+
if (raw.length === 0) {
|
|
312
|
+
throw new TypeError(
|
|
313
|
+
`The \`schedule\` option of cronRoute() in ${file} must list at least one cron expression.`
|
|
314
|
+
);
|
|
315
|
+
}
|
|
316
|
+
try {
|
|
317
|
+
return [...new Set(raw.map((entry) => normalizeCronExpression(name, entry)))];
|
|
318
|
+
} catch (error) {
|
|
319
|
+
throw new TypeError(`${error.message} (from the cronRoute() options in ${file})`);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
async function scanFarmCronRouteJobs(options) {
|
|
323
|
+
const [path4, fs] = await Promise.all([import("path"), import("fs/promises")]);
|
|
324
|
+
const apiDir = path4.join(options.root, options.srcDir || "src", "app", "api");
|
|
325
|
+
try {
|
|
326
|
+
if (!(await fs.stat(apiDir)).isDirectory()) return [];
|
|
327
|
+
} catch {
|
|
328
|
+
return [];
|
|
329
|
+
}
|
|
330
|
+
const { glob } = await import("tinyglobby");
|
|
331
|
+
const files = (await glob("**/route.{ts,tsx,js,jsx}", {
|
|
332
|
+
cwd: apiDir,
|
|
333
|
+
absolute: true,
|
|
334
|
+
expandDirectories: false
|
|
335
|
+
})).sort();
|
|
336
|
+
const jobs = [];
|
|
337
|
+
const byName = /* @__PURE__ */ new Map();
|
|
338
|
+
for (const file of files) {
|
|
339
|
+
const code = await fs.readFile(file, "utf8");
|
|
340
|
+
if (!code.includes("cronRoute")) continue;
|
|
341
|
+
const parse = await loadParseAst();
|
|
342
|
+
const lang = LANGS[path4.extname(file).slice(1)] ?? "tsx";
|
|
343
|
+
let program;
|
|
344
|
+
try {
|
|
345
|
+
program = parse(code, { lang });
|
|
346
|
+
} catch (error) {
|
|
347
|
+
throw new TypeError(
|
|
348
|
+
`The route file ${file} could not be parsed while reading its cronRoute() schedule: ${error.message}`
|
|
349
|
+
);
|
|
350
|
+
}
|
|
351
|
+
const locals = cronRouteLocalNames(program);
|
|
352
|
+
if (locals.size === 0) continue;
|
|
353
|
+
const relativeDir = path4.relative(apiDir, path4.dirname(file)).split(path4.sep).join("/");
|
|
354
|
+
const routePath = relativeDir === "" || relativeDir === "." ? "/api" : `/api/${relativeDir}`;
|
|
355
|
+
for (const node of walkNodes(program)) {
|
|
356
|
+
if (node.type !== "CallExpression" || node.callee?.type !== "Identifier" || !locals.has(node.callee.name)) {
|
|
357
|
+
continue;
|
|
358
|
+
}
|
|
359
|
+
const optionsArgument = node.arguments?.[1];
|
|
360
|
+
if (!optionsArgument || optionsArgument.type === "SpreadElement") continue;
|
|
361
|
+
const optionsNode = unwrap(optionsArgument);
|
|
362
|
+
if (optionsNode.type !== "ObjectExpression") continue;
|
|
363
|
+
const job = scannedJobFromOptions(optionsNode, file, routePath);
|
|
364
|
+
if (!job) continue;
|
|
365
|
+
if (/[[\]]/.test(routePath)) {
|
|
366
|
+
throw new TypeError(
|
|
367
|
+
`The scheduled cronRoute() in ${file} sits under a dynamic segment, and a scheduler cannot fill route params. Move the schedule to a static route.`
|
|
368
|
+
);
|
|
369
|
+
}
|
|
370
|
+
const existing = byName.get(job.name);
|
|
371
|
+
if (existing !== void 0) {
|
|
372
|
+
throw new TypeError(
|
|
373
|
+
`Farm cron job ${JSON.stringify(job.name)} is defined twice: in ${existing} and in ${file}. Rename or remove one of them.`
|
|
374
|
+
);
|
|
375
|
+
}
|
|
376
|
+
byName.set(job.name, file);
|
|
377
|
+
jobs.push(job);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
return jobs;
|
|
381
|
+
}
|
|
382
|
+
function mergeFarmCronJobs(config, scanned) {
|
|
383
|
+
const configNames = new Set(config.jobs.map((job) => job.name));
|
|
384
|
+
const jobs = [...config.jobs];
|
|
385
|
+
for (const scannedJob of scanned) {
|
|
386
|
+
if (configNames.has(scannedJob.name)) {
|
|
387
|
+
throw new TypeError(
|
|
388
|
+
`Farm cron job ${JSON.stringify(scannedJob.name)} is defined twice: in the \`cron\` config in farm.config.ts and in ${scannedJob.filePath}. Rename or remove one of them.`
|
|
389
|
+
);
|
|
390
|
+
}
|
|
391
|
+
if (!scannedJob.enabled) continue;
|
|
392
|
+
const { filePath: _filePath, enabled: _enabled, ...job } = scannedJob;
|
|
393
|
+
jobs.push(job);
|
|
394
|
+
}
|
|
395
|
+
if (jobs.length === config.jobs.length) return config;
|
|
396
|
+
return { ...config, enabled: jobs.length > 0, jobs };
|
|
397
|
+
}
|
|
398
|
+
async function resolveProjectCronJobs(options) {
|
|
399
|
+
const resolved = resolveCronConfig(options.cron);
|
|
400
|
+
if (resolved === options.cron || options.cron === false) return resolved;
|
|
401
|
+
const scanned = await scanFarmCronRouteJobs({
|
|
402
|
+
root: options.root || process.cwd(),
|
|
403
|
+
srcDir: options.srcDir
|
|
404
|
+
});
|
|
405
|
+
return mergeFarmCronJobs(resolved, scanned);
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
// src/config.ts
|
|
409
|
+
import path3 from "path";
|
|
410
|
+
|
|
411
|
+
// src/agent-config.ts
|
|
412
|
+
var DEFAULT_JSON_LD = { type: "WebSite" };
|
|
413
|
+
function resolveFarmAgentConfig(input, context = {}) {
|
|
414
|
+
const jsonLd = input?.jsonLd;
|
|
415
|
+
return {
|
|
416
|
+
jsonLd: jsonLd === void 0 ? { ...DEFAULT_JSON_LD } : !jsonLd ? false : jsonLd === true ? {} : jsonLd,
|
|
417
|
+
noindexPreviews: resolveFarmNoindexPreviews(input?.noindexPreviews),
|
|
418
|
+
// The docs engine answers /llms.txt with its own pages; a default here would replace it.
|
|
419
|
+
// llms-full.txt renders every listed page, so it stays opt-in.
|
|
420
|
+
llmsTxt: resolveFarmLlmsTxtConfig(input?.llmsTxt ?? (context.docs ? false : { full: false })),
|
|
421
|
+
// Same rule as llms.txt: the docs engine answers /sitemap.xml with its own pages.
|
|
422
|
+
sitemap: resolveFarmAgentSitemap(input?.sitemap ?? !context.docs),
|
|
423
|
+
crawlers: resolveFarmAgentCrawlers(input?.crawlers),
|
|
424
|
+
apiCatalog: resolveFarmAgentBoolean(input?.apiCatalog, "apiCatalog", false),
|
|
425
|
+
aiCatalog: resolveFarmAgentBoolean(input?.aiCatalog, "aiCatalog", true),
|
|
426
|
+
manifest: resolveFarmAppManifestConfig(input?.manifest),
|
|
427
|
+
// Same rule as llms.txt: the docs engine serves its own MCP server at /mcp.
|
|
428
|
+
mcp: resolveFarmAgentBoolean(input?.mcp, "mcp", !context.docs)
|
|
429
|
+
};
|
|
430
|
+
}
|
|
431
|
+
function resolveFarmAgentBoolean(input, key, fallback) {
|
|
432
|
+
if (input === void 0) return fallback;
|
|
433
|
+
if (typeof input !== "boolean") throw new TypeError(`agent.${key} must be a boolean.`);
|
|
434
|
+
return input;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
// src/docs/framework-detect.ts
|
|
438
|
+
import { readFile } from "fs/promises";
|
|
439
|
+
import { createRequire as createRequire2 } from "module";
|
|
440
|
+
import path2 from "path";
|
|
441
|
+
import { pathToFileURL as pathToFileURL2 } from "url";
|
|
442
|
+
var FRAMEWORK_PACKAGE = "@farming-labs/farmjs";
|
|
443
|
+
var FRAMEWORK_CONFIG_ENTRY = "@farming-labs/farmjs/config";
|
|
444
|
+
var SUPPORTED_ADAPTER_PROTOCOL = 1;
|
|
445
|
+
async function frameworkDeclaredByApp(root) {
|
|
446
|
+
try {
|
|
447
|
+
const raw = await readFile(path2.join(root, "package.json"), "utf8");
|
|
448
|
+
const manifest = JSON.parse(raw);
|
|
449
|
+
for (const field of ["dependencies", "devDependencies", "peerDependencies"]) {
|
|
450
|
+
const section = manifest[field];
|
|
451
|
+
if (section && typeof section === "object" && FRAMEWORK_PACKAGE in section) {
|
|
452
|
+
return true;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
} catch {
|
|
456
|
+
}
|
|
457
|
+
return false;
|
|
458
|
+
}
|
|
459
|
+
var emittedNotices = /* @__PURE__ */ new Set();
|
|
460
|
+
function noticeOnce(key, emit, message) {
|
|
461
|
+
if (emittedNotices.has(key)) return;
|
|
462
|
+
emittedNotices.add(key);
|
|
463
|
+
emit(message);
|
|
464
|
+
}
|
|
465
|
+
function docsWantsFrameworkDetection(docs) {
|
|
466
|
+
if (docs === true) return true;
|
|
467
|
+
if (!docs || typeof docs !== "object") return false;
|
|
468
|
+
if (docs.enabled === false) return false;
|
|
469
|
+
if (docs.adapter !== void 0) return false;
|
|
470
|
+
return true;
|
|
471
|
+
}
|
|
472
|
+
function isSupportedAdapterDescriptor(value) {
|
|
473
|
+
if (!value || typeof value !== "object") return false;
|
|
474
|
+
const descriptor = value;
|
|
475
|
+
return descriptor.protocol === SUPPORTED_ADAPTER_PROTOCOL && typeof descriptor.server === "string" && descriptor.server.length > 0 && typeof descriptor.react === "string" && descriptor.react.length > 0;
|
|
476
|
+
}
|
|
477
|
+
async function applyFarmDocsFrameworkAutoDetection(userConfig, options) {
|
|
478
|
+
if (!docsWantsFrameworkDetection(userConfig.docs)) return userConfig;
|
|
479
|
+
const log = options.log ?? ((message) => console.log(message));
|
|
480
|
+
const warn = options.warn ?? ((message) => console.warn(message));
|
|
481
|
+
const root = path2.resolve(options.root || process.cwd());
|
|
482
|
+
if (!await frameworkDeclaredByApp(root)) {
|
|
483
|
+
noticeOnce(
|
|
484
|
+
"embedded-fallback",
|
|
485
|
+
warn,
|
|
486
|
+
`[farm] docs is served by the embedded renderer, which is being replaced by the ${FRAMEWORK_PACKAGE} docs framework. Install ${FRAMEWORK_PACKAGE} (with @farming-labs/docs and @farming-labs/theme) to migrate now, or set docs.adapter = false to keep the embedded renderer and silence this notice.`
|
|
487
|
+
);
|
|
488
|
+
return userConfig;
|
|
489
|
+
}
|
|
490
|
+
let configEntryPath;
|
|
491
|
+
try {
|
|
492
|
+
const requireFromApp = createRequire2(path2.join(root, "package.json"));
|
|
493
|
+
configEntryPath = requireFromApp.resolve(FRAMEWORK_CONFIG_ENTRY);
|
|
494
|
+
} catch {
|
|
495
|
+
noticeOnce(
|
|
496
|
+
"declared-not-installed",
|
|
497
|
+
warn,
|
|
498
|
+
`[farm] ${FRAMEWORK_PACKAGE} is declared in package.json but could not be resolved; keeping the embedded docs renderer. Run your package manager's install to enable docs delegation.`
|
|
499
|
+
);
|
|
500
|
+
return userConfig;
|
|
501
|
+
}
|
|
502
|
+
try {
|
|
503
|
+
const frameworkConfig = await import(
|
|
504
|
+
/* @vite-ignore */
|
|
505
|
+
pathToFileURL2(configEntryPath).href
|
|
506
|
+
);
|
|
507
|
+
const withDocs = frameworkConfig?.withDocs;
|
|
508
|
+
if (typeof withDocs !== "function") {
|
|
509
|
+
noticeOnce(
|
|
510
|
+
"missing-withdocs",
|
|
511
|
+
warn,
|
|
512
|
+
`[farm] ${FRAMEWORK_CONFIG_ENTRY} does not export withDocs(); keeping the embedded docs renderer.`
|
|
513
|
+
);
|
|
514
|
+
return userConfig;
|
|
515
|
+
}
|
|
516
|
+
const applied = withDocs(userConfig);
|
|
517
|
+
const adapter = applied?.docs?.adapter;
|
|
518
|
+
if (!isSupportedAdapterDescriptor(adapter)) {
|
|
519
|
+
noticeOnce(
|
|
520
|
+
"unsupported-descriptor",
|
|
521
|
+
warn,
|
|
522
|
+
`[farm] The installed ${FRAMEWORK_PACKAGE} release publishes a docs adapter this Farm version cannot drive (need protocol ${SUPPORTED_ADAPTER_PROTOCOL}); keeping the embedded docs renderer. Upgrading @farm.js/core usually resolves this.`
|
|
523
|
+
);
|
|
524
|
+
return userConfig;
|
|
525
|
+
}
|
|
526
|
+
noticeOnce(
|
|
527
|
+
"delegated",
|
|
528
|
+
log,
|
|
529
|
+
`[farm] docs: delegated to ${FRAMEWORK_PACKAGE} (detected in this app). Set docs.adapter = false to keep the embedded renderer.`
|
|
530
|
+
);
|
|
531
|
+
return applied;
|
|
532
|
+
} catch (error) {
|
|
533
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
534
|
+
noticeOnce(
|
|
535
|
+
"detect-failed",
|
|
536
|
+
warn,
|
|
537
|
+
`[farm] Failed to load ${FRAMEWORK_CONFIG_ENTRY} (${message}); keeping the embedded docs renderer.`
|
|
538
|
+
);
|
|
539
|
+
return userConfig;
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
// src/config.ts
|
|
544
|
+
var FARM_RESOLVED_CUSTOM_CONTEXT = /* @__PURE__ */ Symbol.for("farm.resolvedCustomContext");
|
|
545
|
+
function resolveSchemaConfig(config) {
|
|
546
|
+
if (config === void 0) return {};
|
|
547
|
+
if (!config || typeof config !== "object" || Array.isArray(config)) {
|
|
548
|
+
throw new TypeError("`schema` in farm.config must be an object.");
|
|
549
|
+
}
|
|
550
|
+
for (const key of ["allowExtend", "allowForeignKeys"]) {
|
|
551
|
+
const entries = config[key];
|
|
552
|
+
if (entries === void 0) continue;
|
|
553
|
+
if (!entries || typeof entries !== "object" || Array.isArray(entries)) {
|
|
554
|
+
throw new TypeError(
|
|
555
|
+
`\`schema.${key}\` must map a plugin's migrate name to a list of model or table names.`
|
|
556
|
+
);
|
|
557
|
+
}
|
|
558
|
+
for (const [owner, tables] of Object.entries(entries)) {
|
|
559
|
+
if (!Array.isArray(tables) || tables.some((table) => typeof table !== "string")) {
|
|
560
|
+
throw new TypeError(
|
|
561
|
+
`\`schema.${key}.${owner}\` must be a list of model or table names, such as ["user"].`
|
|
562
|
+
);
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
return config;
|
|
567
|
+
}
|
|
568
|
+
function hasCustomFarmRouteContext(config) {
|
|
569
|
+
return config[FARM_RESOLVED_CUSTOM_CONTEXT] === true;
|
|
570
|
+
}
|
|
571
|
+
function isResolvedFarmConfig(config) {
|
|
572
|
+
return Object.prototype.hasOwnProperty.call(config, FARM_RESOLVED_CUSTOM_CONTEXT);
|
|
573
|
+
}
|
|
574
|
+
function normalizeDeployTarget(target) {
|
|
575
|
+
if (!target) return void 0;
|
|
576
|
+
if (target === "cloudflare-pages" || target === "cloudflare_pages") return "cloudflare";
|
|
577
|
+
if (target === "node-server" || target === "nitro") return "node";
|
|
578
|
+
return target;
|
|
579
|
+
}
|
|
580
|
+
function getPresetForDeployTarget(target) {
|
|
581
|
+
switch (normalizeDeployTarget(target)) {
|
|
582
|
+
case "vercel":
|
|
583
|
+
return "vercel";
|
|
584
|
+
case "cloudflare":
|
|
585
|
+
return "cloudflare-pages";
|
|
586
|
+
case "netlify":
|
|
587
|
+
return "netlify";
|
|
588
|
+
case "node":
|
|
589
|
+
return "node-server";
|
|
590
|
+
default:
|
|
591
|
+
return void 0;
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
function getDeployTargetForPreset(preset) {
|
|
595
|
+
if (!preset) return void 0;
|
|
596
|
+
if (preset === "vercel" || preset === "vercel-edge") return "vercel";
|
|
597
|
+
if (preset === "cloudflare" || preset === "cloudflare-pages" || preset === "cloudflare-module") {
|
|
598
|
+
return "cloudflare";
|
|
599
|
+
}
|
|
600
|
+
if (preset === "netlify" || preset === "netlify-edge") return "netlify";
|
|
601
|
+
if (preset === "node-server") return "node";
|
|
602
|
+
return void 0;
|
|
603
|
+
}
|
|
604
|
+
var NETLIFY_INTERNAL_FUNCTIONS_DIR = ".netlify/functions-internal";
|
|
605
|
+
function getDefaultDeployOutputDir(target, preset, distDir) {
|
|
606
|
+
const normalizedTarget = normalizeDeployTarget(target) || getDeployTargetForPreset(preset);
|
|
607
|
+
if (normalizedTarget === "vercel") return ".vercel/output";
|
|
608
|
+
if (normalizedTarget === "netlify" && (!preset || preset === "netlify")) {
|
|
609
|
+
return NETLIFY_INTERNAL_FUNCTIONS_DIR;
|
|
610
|
+
}
|
|
611
|
+
return `${distDir}/.output`;
|
|
612
|
+
}
|
|
613
|
+
function resolveDeployOutputPath(root, outputDir) {
|
|
614
|
+
return path3.isAbsolute(outputDir) ? outputDir : path3.join(root, outputDir);
|
|
615
|
+
}
|
|
616
|
+
var PLATFORM_BUILD_ENV_TARGETS = [
|
|
617
|
+
["VERCEL", "vercel"],
|
|
618
|
+
["NETLIFY", "netlify"],
|
|
619
|
+
["CF_PAGES", "cloudflare"]
|
|
620
|
+
];
|
|
621
|
+
function detectPlatformDeployTarget(env = process.env) {
|
|
622
|
+
for (const [key, target] of PLATFORM_BUILD_ENV_TARGETS) {
|
|
623
|
+
const value = env[key]?.trim().toLowerCase();
|
|
624
|
+
if (value === "1" || value === "true") return target;
|
|
625
|
+
}
|
|
626
|
+
return void 0;
|
|
627
|
+
}
|
|
628
|
+
var warnedPlatformMismatches = /* @__PURE__ */ new Set();
|
|
629
|
+
function resolveDeployConfig(config, overrides = {}) {
|
|
630
|
+
const deploy = config.deploy || {};
|
|
631
|
+
const distDir = config.distDir || ".farm";
|
|
632
|
+
const overrideTarget = normalizeDeployTarget(overrides.target);
|
|
633
|
+
let target = overrideTarget ? overrideTarget : overrides.preset ? getDeployTargetForPreset(overrides.preset) : normalizeDeployTarget(deploy.target);
|
|
634
|
+
const detectedTarget = detectPlatformDeployTarget(overrides.env);
|
|
635
|
+
if (detectedTarget) {
|
|
636
|
+
const hasExplicitSelection = Boolean(
|
|
637
|
+
target || overrides.preset || deploy.preset || config.preset
|
|
638
|
+
);
|
|
639
|
+
if (!hasExplicitSelection) {
|
|
640
|
+
target = detectedTarget;
|
|
641
|
+
if (!warnedPlatformMismatches.has(`select:${detectedTarget}`)) {
|
|
642
|
+
warnedPlatformMismatches.add(`select:${detectedTarget}`);
|
|
643
|
+
logger.info(
|
|
644
|
+
`Detected ${detectedTarget} build environment; using the ${detectedTarget} preset. Set deploy.target in farm.config.ts to override.`
|
|
645
|
+
);
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
const configuredPreset = deploy.preset || config.preset;
|
|
650
|
+
const overrideTargetPreset = overrideTarget && getDeployTargetForPreset(configuredPreset) !== overrideTarget ? getPresetForDeployTarget(overrideTarget) : void 0;
|
|
651
|
+
const preset = overrides.preset || overrideTargetPreset || configuredPreset || getPresetForDeployTarget(target) || "node-server";
|
|
652
|
+
const resolvedTarget = target || getDeployTargetForPreset(preset);
|
|
653
|
+
if (detectedTarget && resolvedTarget !== detectedTarget) {
|
|
654
|
+
const mismatchKey = `mismatch:${resolvedTarget}:${detectedTarget}`;
|
|
655
|
+
if (!warnedPlatformMismatches.has(mismatchKey)) {
|
|
656
|
+
warnedPlatformMismatches.add(mismatchKey);
|
|
657
|
+
logger.warn(
|
|
658
|
+
`The configured deploy target "${resolvedTarget ?? preset}" cannot be served by ${detectedTarget}, but this build is running in a ${detectedTarget} build environment. Set deploy.target: "${detectedTarget}" in farm.config.ts to deploy there.`
|
|
659
|
+
);
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
const platformOutput = resolvedTarget === "vercel" ? deploy.vercel?.outputDirectory : resolvedTarget === "cloudflare" ? deploy.cloudflare?.outputDir : resolvedTarget === "netlify" ? deploy.netlify?.outputDir : void 0;
|
|
663
|
+
const outputDir = overrides.outputDir || deploy.outputDir || deploy.output || platformOutput || getDefaultDeployOutputDir(resolvedTarget, preset, distDir);
|
|
664
|
+
return {
|
|
665
|
+
...deploy,
|
|
666
|
+
target: resolvedTarget,
|
|
667
|
+
preset,
|
|
668
|
+
outputDir
|
|
669
|
+
};
|
|
670
|
+
}
|
|
671
|
+
function resolveMigrationsConfig(migrations) {
|
|
672
|
+
if (!migrations) return { commands: [] };
|
|
673
|
+
if (Array.isArray(migrations)) return { commands: migrations };
|
|
674
|
+
return { commands: migrations.commands || [] };
|
|
675
|
+
}
|
|
676
|
+
var DOCS_CONFIG_FILENAMES = [
|
|
677
|
+
"docs.config.ts",
|
|
678
|
+
"docs.config.tsx",
|
|
679
|
+
"docs.config.mts",
|
|
680
|
+
"docs.config.cts",
|
|
681
|
+
"docs.config.js",
|
|
682
|
+
"docs.config.jsx",
|
|
683
|
+
"docs.config.mjs",
|
|
684
|
+
"docs.config.cjs",
|
|
685
|
+
"docs.json"
|
|
686
|
+
];
|
|
687
|
+
function normalizeDocsRoute(value, fallback = "/docs") {
|
|
688
|
+
const raw = (value || fallback).trim();
|
|
689
|
+
if (!raw || raw === "/") return "/";
|
|
690
|
+
const normalized = raw.replace(/\\/g, "/").replace(/\/+/g, "/").replace(/^\/?/, "/").replace(/\/+$/, "");
|
|
691
|
+
return normalized || "/";
|
|
692
|
+
}
|
|
693
|
+
function docsRouteToEntry(route) {
|
|
694
|
+
const entry = route.replace(/^\/+/, "").replace(/\/+$/, "");
|
|
695
|
+
return entry || "docs";
|
|
696
|
+
}
|
|
697
|
+
function normalizeDocsContentDir(value) {
|
|
698
|
+
if (!value) return void 0;
|
|
699
|
+
const normalized = value.replace(/\\/g, "/").replace(/^\/+/, "").replace(/\/+$/, "");
|
|
700
|
+
return normalized || void 0;
|
|
701
|
+
}
|
|
702
|
+
async function inferDocsContentDir(root, srcDir, entry) {
|
|
703
|
+
const { existsSync } = await import("fs");
|
|
704
|
+
const contentDir = path3.resolve(root, srcDir, "app", entry);
|
|
705
|
+
if (!existsSync(contentDir)) return void 0;
|
|
706
|
+
const relativeContentDir = path3.relative(root, contentDir);
|
|
707
|
+
if (relativeContentDir.startsWith("..") || path3.isAbsolute(relativeContentDir)) return void 0;
|
|
708
|
+
return normalizeDocsContentDir(relativeContentDir);
|
|
709
|
+
}
|
|
710
|
+
function isRecord(value) {
|
|
711
|
+
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
712
|
+
}
|
|
713
|
+
function cloneSerializable(value, seen = /* @__PURE__ */ new WeakSet()) {
|
|
714
|
+
if (value === null) return null;
|
|
715
|
+
const valueType = typeof value;
|
|
716
|
+
if (valueType === "string" || valueType === "number" || valueType === "boolean") {
|
|
717
|
+
return value;
|
|
718
|
+
}
|
|
719
|
+
if (valueType === "undefined" || valueType === "function" || valueType === "symbol") {
|
|
720
|
+
return void 0;
|
|
721
|
+
}
|
|
722
|
+
if (Array.isArray(value)) {
|
|
723
|
+
return value.map((item) => cloneSerializable(item, seen)).filter((item) => item !== void 0);
|
|
724
|
+
}
|
|
725
|
+
if (value instanceof Date) {
|
|
726
|
+
return value.toISOString();
|
|
727
|
+
}
|
|
728
|
+
if (isRecord(value)) {
|
|
729
|
+
if (seen.has(value)) return void 0;
|
|
730
|
+
seen.add(value);
|
|
731
|
+
const output = {};
|
|
732
|
+
for (const [key, nestedValue] of Object.entries(value)) {
|
|
733
|
+
const clonedValue = cloneSerializable(nestedValue, seen);
|
|
734
|
+
if (clonedValue !== void 0) {
|
|
735
|
+
output[key] = clonedValue;
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
return output;
|
|
739
|
+
}
|
|
740
|
+
return void 0;
|
|
741
|
+
}
|
|
742
|
+
function omitUndefined(value) {
|
|
743
|
+
return Object.fromEntries(
|
|
744
|
+
Object.entries(value).filter(([, entry]) => entry !== void 0)
|
|
745
|
+
);
|
|
746
|
+
}
|
|
747
|
+
function sanitizeDocsConfig(config) {
|
|
748
|
+
return cloneSerializable(config) || {};
|
|
749
|
+
}
|
|
750
|
+
async function findDocsConfigPath(rootDir, configPath) {
|
|
751
|
+
const { existsSync } = await import("fs");
|
|
752
|
+
const root = path3.resolve(rootDir || process.cwd());
|
|
753
|
+
if (configPath) {
|
|
754
|
+
const resolvedPath = path3.isAbsolute(configPath) ? configPath : path3.join(root, configPath);
|
|
755
|
+
if (!existsSync(resolvedPath)) {
|
|
756
|
+
throw new Error(`Could not find docs config at ${configPath}.`);
|
|
757
|
+
}
|
|
758
|
+
return path3.resolve(resolvedPath);
|
|
759
|
+
}
|
|
760
|
+
for (const filename of DOCS_CONFIG_FILENAMES) {
|
|
761
|
+
const resolvedPath = path3.join(root, filename);
|
|
762
|
+
if (existsSync(resolvedPath)) {
|
|
763
|
+
return resolvedPath;
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
return void 0;
|
|
767
|
+
}
|
|
768
|
+
async function loadDocsConfig(rootDir, configPath) {
|
|
769
|
+
const fs = await import("fs/promises");
|
|
770
|
+
const { pathToFileURL: pathToFileURL3 } = await import("url");
|
|
771
|
+
const root = path3.resolve(rootDir || process.cwd());
|
|
772
|
+
const resolvedPath = await findDocsConfigPath(root, configPath);
|
|
773
|
+
if (!resolvedPath) return void 0;
|
|
774
|
+
try {
|
|
775
|
+
if (resolvedPath.endsWith(".json")) {
|
|
776
|
+
const content = await fs.readFile(resolvedPath, "utf8");
|
|
777
|
+
return { config: JSON.parse(content), configPath: resolvedPath };
|
|
778
|
+
}
|
|
779
|
+
const configCacheDir = path3.join(root, ".farm", ".config-loader");
|
|
780
|
+
await fs.mkdir(configCacheDir, { recursive: true });
|
|
781
|
+
const modulePath = path3.join(
|
|
782
|
+
configCacheDir,
|
|
783
|
+
`docs-config-${Date.now()}-${Math.random().toString(36).slice(2)}.mjs`
|
|
784
|
+
);
|
|
785
|
+
await bundleNodeModule({
|
|
786
|
+
root,
|
|
787
|
+
entry: resolvedPath,
|
|
788
|
+
outfile: modulePath,
|
|
789
|
+
target: `node${process.versions.node.split(".")[0]}`,
|
|
790
|
+
externalPackages: true
|
|
791
|
+
});
|
|
792
|
+
const moduleUrl = pathToFileURL3(modulePath).href + `?t=${Date.now()}`;
|
|
793
|
+
let importedConfig;
|
|
794
|
+
try {
|
|
795
|
+
importedConfig = await import(
|
|
796
|
+
/* @vite-ignore */
|
|
797
|
+
moduleUrl
|
|
798
|
+
);
|
|
799
|
+
} finally {
|
|
800
|
+
await fs.unlink(modulePath).catch(() => void 0);
|
|
801
|
+
}
|
|
802
|
+
return {
|
|
803
|
+
config: importedConfig.default || importedConfig,
|
|
804
|
+
configPath: resolvedPath
|
|
805
|
+
};
|
|
806
|
+
} catch (error) {
|
|
807
|
+
const relativePath = path3.relative(root, resolvedPath) || resolvedPath;
|
|
808
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
809
|
+
throw new Error(`Failed to load docs config from ${relativePath}: ${message}`);
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
async function resolveDocsConfig(userDocs, options = {}) {
|
|
813
|
+
const root = options.root || process.cwd();
|
|
814
|
+
if (userDocs === false) {
|
|
815
|
+
return {
|
|
816
|
+
enabled: false,
|
|
817
|
+
entry: "/docs",
|
|
818
|
+
config: { entry: "docs", docsPath: "/docs" }
|
|
819
|
+
};
|
|
820
|
+
}
|
|
821
|
+
const docsOptions = isRecord(userDocs) ? userDocs : {};
|
|
822
|
+
if (docsOptions.enabled === false) {
|
|
823
|
+
return {
|
|
824
|
+
enabled: false,
|
|
825
|
+
entry: "/docs",
|
|
826
|
+
config: { entry: "docs", docsPath: "/docs" }
|
|
827
|
+
};
|
|
828
|
+
}
|
|
829
|
+
const loadedConfig = await loadDocsConfig(root, docsOptions.configPath);
|
|
830
|
+
const hasExplicitDocsConfig = userDocs === true || isRecord(userDocs);
|
|
831
|
+
if (!hasExplicitDocsConfig && !loadedConfig) {
|
|
832
|
+
return {
|
|
833
|
+
enabled: false,
|
|
834
|
+
entry: "/docs",
|
|
835
|
+
config: { entry: "docs", docsPath: "/docs" }
|
|
836
|
+
};
|
|
837
|
+
}
|
|
838
|
+
const fileDocsConfig = omitDocsRoots(loadedConfig?.config);
|
|
839
|
+
const inlineRawDocsConfig = omitDocsRoots(docsOptions.config);
|
|
840
|
+
const inlineDocsConfig = sanitizeDocsConfig(inlineRawDocsConfig);
|
|
841
|
+
const directDocsConfig = sanitizeDocsConfig({
|
|
842
|
+
...docsOptions,
|
|
843
|
+
adapter: void 0,
|
|
844
|
+
enabled: void 0,
|
|
845
|
+
prerender: void 0,
|
|
846
|
+
config: void 0,
|
|
847
|
+
configPath: void 0,
|
|
848
|
+
roots: void 0
|
|
849
|
+
});
|
|
850
|
+
const loadedDocsConfig = sanitizeDocsConfig(fileDocsConfig);
|
|
851
|
+
const mergedDocsConfig = {
|
|
852
|
+
...loadedDocsConfig,
|
|
853
|
+
...inlineDocsConfig,
|
|
854
|
+
...directDocsConfig
|
|
855
|
+
};
|
|
856
|
+
const runtimeDocsConfig = {
|
|
857
|
+
...fileDocsConfig,
|
|
858
|
+
...inlineRawDocsConfig,
|
|
859
|
+
...omitUndefined({
|
|
860
|
+
...docsOptions,
|
|
861
|
+
adapter: void 0,
|
|
862
|
+
enabled: void 0,
|
|
863
|
+
prerender: void 0,
|
|
864
|
+
config: void 0,
|
|
865
|
+
configPath: void 0,
|
|
866
|
+
roots: void 0
|
|
867
|
+
})
|
|
868
|
+
};
|
|
869
|
+
const explicitRoute = typeof docsOptions.entry === "string" ? docsOptions.entry : void 0;
|
|
870
|
+
const configuredDocsPath = typeof mergedDocsConfig.docsPath === "string" ? mergedDocsConfig.docsPath : void 0;
|
|
871
|
+
const configuredEntry = typeof mergedDocsConfig.entry === "string" ? mergedDocsConfig.entry : void 0;
|
|
872
|
+
const entryRoute = normalizeDocsRoute(
|
|
873
|
+
configuredDocsPath || explicitRoute || (configuredEntry ? `/${configuredEntry}` : void 0)
|
|
874
|
+
);
|
|
875
|
+
const docsEntry = explicitRoute && explicitRoute.startsWith("/") ? docsRouteToEntry(explicitRoute) : docsRouteToEntry(configuredEntry || entryRoute);
|
|
876
|
+
const configuredContentDir = normalizeDocsContentDir(
|
|
877
|
+
docsOptions.contentDir || mergedDocsConfig.contentDir
|
|
878
|
+
);
|
|
879
|
+
const contentDir = configuredContentDir || await inferDocsContentDir(root, options.srcDir || "src", docsEntry);
|
|
880
|
+
const configOverrides = { ...inlineDocsConfig, ...directDocsConfig };
|
|
881
|
+
const configFileName = loadedConfig ? path3.relative(root, loadedConfig.configPath) || loadedConfig.configPath : "the docs config";
|
|
882
|
+
const roots = await resolveDocsRoots(
|
|
883
|
+
[
|
|
884
|
+
{ field: `roots in ${configFileName}`, roots: docsRootsOf(loadedConfig?.config), file: true },
|
|
885
|
+
{ field: "docs.config.roots", roots: docsRootsOf(docsOptions.config) },
|
|
886
|
+
{ field: "docs.roots", roots: docsOptions.roots }
|
|
887
|
+
],
|
|
888
|
+
{
|
|
889
|
+
root,
|
|
890
|
+
srcDir: options.srcDir || "src",
|
|
891
|
+
mainEntry: entryRoute,
|
|
892
|
+
mergedDocsConfig,
|
|
893
|
+
runtimeDocsConfig,
|
|
894
|
+
configOverrides
|
|
895
|
+
}
|
|
896
|
+
);
|
|
897
|
+
if (roots.length > 0 && !(docsOptions.adapter && docsOptions.adapter.server && docsOptions.adapter.react)) {
|
|
898
|
+
throw new Error(
|
|
899
|
+
`Docs roots require a docs adapter such as @farming-labs/farmjs; Farm's built-in docs renderer serves a single docs root. Install the adapter, or remove the roots from ${configFileName} and docs.roots.`
|
|
900
|
+
);
|
|
901
|
+
}
|
|
902
|
+
return {
|
|
903
|
+
enabled: true,
|
|
904
|
+
entry: entryRoute,
|
|
905
|
+
...docsOptions.adapter ? { adapter: docsOptions.adapter } : {},
|
|
906
|
+
...docsOptions.prerender === true ? { prerender: true } : {},
|
|
907
|
+
contentDir,
|
|
908
|
+
configPath: loadedConfig?.configPath,
|
|
909
|
+
config: {
|
|
910
|
+
...mergedDocsConfig,
|
|
911
|
+
entry: docsEntry,
|
|
912
|
+
docsPath: entryRoute,
|
|
913
|
+
...contentDir ? { contentDir } : {}
|
|
914
|
+
},
|
|
915
|
+
runtimeConfig: {
|
|
916
|
+
...runtimeDocsConfig,
|
|
917
|
+
entry: docsEntry,
|
|
918
|
+
docsPath: entryRoute,
|
|
919
|
+
...contentDir ? { contentDir } : {}
|
|
920
|
+
},
|
|
921
|
+
configOverrides,
|
|
922
|
+
...roots.length > 0 ? { roots } : {}
|
|
923
|
+
};
|
|
924
|
+
}
|
|
925
|
+
function docsRootsOf(config) {
|
|
926
|
+
return isRecord(config) ? config.roots : void 0;
|
|
927
|
+
}
|
|
928
|
+
function omitDocsRoots(config) {
|
|
929
|
+
if (!isRecord(config)) return {};
|
|
930
|
+
const { roots: _roots, ...rest } = config;
|
|
931
|
+
return rest;
|
|
932
|
+
}
|
|
933
|
+
function omitKeys(value, keys) {
|
|
934
|
+
const output = { ...value };
|
|
935
|
+
for (const key of keys) delete output[key];
|
|
936
|
+
return output;
|
|
937
|
+
}
|
|
938
|
+
async function resolveDocsRoots(sources, options) {
|
|
939
|
+
const declared = /* @__PURE__ */ new Map();
|
|
940
|
+
for (const source of sources) {
|
|
941
|
+
if (source.roots === void 0) continue;
|
|
942
|
+
if (!Array.isArray(source.roots)) throw new Error(`${source.field} must be an array.`);
|
|
943
|
+
const seen = /* @__PURE__ */ new Set();
|
|
944
|
+
for (const [index, rootInput] of source.roots.entries()) {
|
|
945
|
+
const field = `${source.field}[${index}].entry`;
|
|
946
|
+
if (!isRecord(rootInput) || typeof rootInput.entry !== "string" || !rootInput.entry.trim()) {
|
|
947
|
+
throw new Error(`${field} must be a route such as "/guides/docs".`);
|
|
948
|
+
}
|
|
949
|
+
const entryRoute = normalizeDocsRoute(rootInput.entry);
|
|
950
|
+
if (entryRoute === "/") {
|
|
951
|
+
throw new Error(
|
|
952
|
+
`${field} cannot be "/"; a docs root at "/" leaves no route for the others.`
|
|
953
|
+
);
|
|
954
|
+
}
|
|
955
|
+
if (entryRoute === options.mainEntry || seen.has(entryRoute)) {
|
|
956
|
+
throw new Error(
|
|
957
|
+
`${field} ${JSON.stringify(entryRoute)} is already served by another docs root.`
|
|
958
|
+
);
|
|
959
|
+
}
|
|
960
|
+
seen.add(entryRoute);
|
|
961
|
+
const { entry: _entry, ...fields } = rootInput;
|
|
962
|
+
const layers = declared.get(entryRoute) ?? { file: {}, overrides: {} };
|
|
963
|
+
if (source.file) layers.file = fields;
|
|
964
|
+
else layers.overrides = { ...layers.overrides, ...fields };
|
|
965
|
+
declared.set(entryRoute, layers);
|
|
966
|
+
}
|
|
967
|
+
}
|
|
968
|
+
const roots = [];
|
|
969
|
+
for (const [entryRoute, { file, overrides }] of declared) {
|
|
970
|
+
const docsEntry = docsRouteToEntry(entryRoute);
|
|
971
|
+
const contentDir = normalizeDocsContentDir(
|
|
972
|
+
typeof overrides.contentDir === "string" && overrides.contentDir || typeof file.contentDir === "string" && file.contentDir || void 0
|
|
973
|
+
) || await inferDocsContentDir(options.root, options.srcDir, docsEntry);
|
|
974
|
+
const routeConfig = {
|
|
975
|
+
entry: docsEntry,
|
|
976
|
+
docsPath: entryRoute,
|
|
977
|
+
contentDir
|
|
978
|
+
};
|
|
979
|
+
const rootOverrides = sanitizeDocsConfig(overrides);
|
|
980
|
+
roots.push({
|
|
981
|
+
entry: entryRoute,
|
|
982
|
+
contentDir,
|
|
983
|
+
config: omitUndefined({
|
|
984
|
+
...options.mergedDocsConfig,
|
|
985
|
+
...sanitizeDocsConfig(file),
|
|
986
|
+
...rootOverrides,
|
|
987
|
+
...routeConfig
|
|
988
|
+
}),
|
|
989
|
+
runtimeConfig: omitUndefined({
|
|
990
|
+
...options.runtimeDocsConfig,
|
|
991
|
+
...file,
|
|
992
|
+
...overrides,
|
|
993
|
+
...routeConfig
|
|
994
|
+
}),
|
|
995
|
+
// The adapter reads the config file's own root from the config module, so the main
|
|
996
|
+
// root's overrides leave out whatever that root sets itself.
|
|
997
|
+
configOverrides: {
|
|
998
|
+
...omitKeys(options.configOverrides, Object.keys(file)),
|
|
999
|
+
...rootOverrides
|
|
1000
|
+
}
|
|
1001
|
+
});
|
|
1002
|
+
}
|
|
1003
|
+
return roots;
|
|
1004
|
+
}
|
|
1005
|
+
function validateRedirectConfigs(redirects, field) {
|
|
1006
|
+
for (const [index, redirect] of redirects.entries()) {
|
|
1007
|
+
validateConfigRouteSource(redirect.source, `${field}[${index}].source`);
|
|
1008
|
+
if (redirect.statusCode !== void 0 && !isFarmRedirectStatus(redirect.statusCode)) {
|
|
1009
|
+
throw new RangeError(
|
|
1010
|
+
`${field}[${index}].statusCode must be one of 301, 302, 303, 307, or 308.`
|
|
1011
|
+
);
|
|
1012
|
+
}
|
|
1013
|
+
}
|
|
1014
|
+
return redirects;
|
|
1015
|
+
}
|
|
1016
|
+
function validateMiddlewareConfig(middleware) {
|
|
1017
|
+
for (const entry of Array.isArray(middleware) ? middleware : middleware ? [middleware] : []) {
|
|
1018
|
+
compileMiddlewareConfig({ matcher: entry.matcher, exclude: entry.exclude });
|
|
1019
|
+
}
|
|
1020
|
+
return middleware;
|
|
1021
|
+
}
|
|
1022
|
+
function validateConfigRouteSources(routes, field) {
|
|
1023
|
+
for (const [index, route] of routes.entries()) {
|
|
1024
|
+
validateConfigRouteSource(route.source, `${field}[${index}].source`);
|
|
1025
|
+
}
|
|
1026
|
+
return routes;
|
|
1027
|
+
}
|
|
1028
|
+
async function resolveConfig(userConfig, mode) {
|
|
1029
|
+
resolveFarmServerComponentsMode(userConfig.experimental?.serverComponents);
|
|
1030
|
+
const projectRoot = userConfig.root || process.cwd();
|
|
1031
|
+
const layerResolution = await resolveFarmLayers(userConfig, {
|
|
1032
|
+
root: projectRoot,
|
|
1033
|
+
mode
|
|
1034
|
+
});
|
|
1035
|
+
userConfig = layerResolution.config;
|
|
1036
|
+
if (userConfig.typescript !== void 0) {
|
|
1037
|
+
logger.warn(
|
|
1038
|
+
'The top-level "typescript" option is not supported and has no effect. Configure TypeScript in `tsconfig.json` and run `tsc --noEmit` separately when builds must enforce project type errors.'
|
|
1039
|
+
);
|
|
1040
|
+
}
|
|
1041
|
+
if (userConfig.output !== void 0) {
|
|
1042
|
+
logger.warn(
|
|
1043
|
+
'The top-level "output" option is not supported and has no effect. Configure `deploy.target`, `deploy.preset`, or `deploy.outputDir` for deployment output, and use route rendering configuration for static pages.'
|
|
1044
|
+
);
|
|
1045
|
+
}
|
|
1046
|
+
if (isReactRenderer(resolveFarmRenderer(userConfig.renderer))) {
|
|
1047
|
+
userConfig = await applyFarmDocsFrameworkAutoDetection(userConfig, {
|
|
1048
|
+
root: userConfig.root || projectRoot
|
|
1049
|
+
});
|
|
1050
|
+
}
|
|
1051
|
+
const redirects = validateRedirectConfigs(
|
|
1052
|
+
typeof userConfig.redirects === "function" ? await userConfig.redirects() : userConfig.redirects || [],
|
|
1053
|
+
"redirects"
|
|
1054
|
+
);
|
|
1055
|
+
const rewrites = typeof userConfig.rewrites === "function" ? await userConfig.rewrites() : userConfig.rewrites || [];
|
|
1056
|
+
validateConfigRouteSources(rewrites, "rewrites");
|
|
1057
|
+
const headers = typeof userConfig.headers === "function" ? await userConfig.headers() : userConfig.headers || [];
|
|
1058
|
+
validateConfigRouteSources(headers, "headers");
|
|
1059
|
+
const routeRules = normalizeRouteRules(userConfig.routeRules);
|
|
1060
|
+
const routeRuleRedirects = routeRulesToRedirects(routeRules);
|
|
1061
|
+
const routeRuleHeaders = routeRulesToHeaders(routeRules);
|
|
1062
|
+
const security = resolveFarmSecurityConfig(userConfig.security);
|
|
1063
|
+
const securityHeader = getFarmSecurityHeader(security);
|
|
1064
|
+
if (farmCspBlocksFrameworkInlineScripts(security)) {
|
|
1065
|
+
logger.warn(
|
|
1066
|
+
"security.csp blocks the inline scripts Farm injects for theming and hydration. Set security.csp.nonce to true for managed dynamic nonces and prerendered hashes, or make the governing script directive allow 'unsafe-inline' without a nonce, hash, or 'strict-dynamic' source."
|
|
1067
|
+
);
|
|
1068
|
+
}
|
|
1069
|
+
const root = userConfig.root || process.cwd();
|
|
1070
|
+
const desktopSetup = await globalThis[/* @__PURE__ */ Symbol.for("@farm.js/core/desktop-setup")]?.(userConfig, root, mode);
|
|
1071
|
+
if (desktopSetup) userConfig = desktopSetup.userConfig;
|
|
1072
|
+
const deploy = resolveDeployConfig(userConfig, desktopSetup?.deploy);
|
|
1073
|
+
const srcDir = userConfig.srcDir || "src";
|
|
1074
|
+
setFarmProjectSourceDir(root, srcDir);
|
|
1075
|
+
const docs = await resolveDocsConfig(userConfig.docs, { root, srcDir });
|
|
1076
|
+
const md = resolveMarkdownConfig(userConfig.md);
|
|
1077
|
+
const mdx = resolveMdxConfig(userConfig.mdx);
|
|
1078
|
+
const env = resolveEnv(userConfig.env, process.env);
|
|
1079
|
+
setEnv(env);
|
|
1080
|
+
const api = await resolveFarmAPIConfig(userConfig.api, { root, mode, env });
|
|
1081
|
+
const cron = await resolveProjectCronJobs({ root, srcDir, cron: userConfig.cron });
|
|
1082
|
+
const auth = resolveFarmAuthConfig(userConfig.auth);
|
|
1083
|
+
const mcp = resolveFarmMCPConfig(userConfig.mcp);
|
|
1084
|
+
if (auth.enabled && userConfig.integrations?.auth) {
|
|
1085
|
+
throw new Error(
|
|
1086
|
+
"Choose either the top-level `auth` config or `integrations.auth`; they cannot both own the auth route."
|
|
1087
|
+
);
|
|
1088
|
+
}
|
|
1089
|
+
const nativeAuthIntegration = await resolveFarmAuthIntegration(auth, {
|
|
1090
|
+
root,
|
|
1091
|
+
mode
|
|
1092
|
+
});
|
|
1093
|
+
const nativeMCPPlugin = await resolveFarmMCPPlugin(mcp, { root });
|
|
1094
|
+
if (nativeMCPPlugin && userConfig.plugins?.some((plugin) => plugin?.name === "farm:api-mcp")) {
|
|
1095
|
+
throw new Error(
|
|
1096
|
+
"Choose either the top-level `mcp` config or `apiMcp()` in `plugins`; they configure the same MCP transport."
|
|
1097
|
+
);
|
|
1098
|
+
}
|
|
1099
|
+
const integrations = nativeAuthIntegration ? { ...userConfig.integrations, auth: nativeAuthIntegration } : userConfig.integrations || {};
|
|
1100
|
+
const generateBuildId = userConfig.generateBuildId || (() => `build-${Date.now()}`);
|
|
1101
|
+
const deploymentId = normalizeFarmDeploymentId(
|
|
1102
|
+
userConfig.deploymentId || process.env.FARM_DEPLOYMENT_ID || process.env.VERCEL_GIT_COMMIT_SHA || process.env.CF_PAGES_COMMIT_SHA || (mode === "production" ? await generateBuildId() : "development")
|
|
1103
|
+
);
|
|
1104
|
+
const basePath = normalizeFarmConfigBasePath(userConfig.basePath);
|
|
1105
|
+
const mobileSessionPlugin = userConfig.mobile !== void 0 && userConfig.mobile !== null ? (await import("./session-QZXZOPR2.mjs")).createFarmMobileSessionPlugin({
|
|
1106
|
+
basePath,
|
|
1107
|
+
integrations: () => integrations
|
|
1108
|
+
}) : null;
|
|
1109
|
+
let nativeServerFnAppDirs = [];
|
|
1110
|
+
const nativeServerFnPlugin = userConfig.mobile !== void 0 && userConfig.mobile !== null ? (await import("./native-server-fn-handler-GLRHAYWV.mjs")).createFarmNativeServerFnPlugin({
|
|
1111
|
+
resolve: (await import("./internal/native-server-fns.mjs")).createFarmDevNativeServerFnResolver(
|
|
1112
|
+
{ root, srcDir, appDirs: () => nativeServerFnAppDirs }
|
|
1113
|
+
)
|
|
1114
|
+
}) : null;
|
|
1115
|
+
const openapi = {
|
|
1116
|
+
enabled: false,
|
|
1117
|
+
route: "/docs/reference",
|
|
1118
|
+
specRoute: "/openapi.json",
|
|
1119
|
+
title: "API Documentation",
|
|
1120
|
+
description: "Auto-generated API documentation",
|
|
1121
|
+
version: "1.0.0",
|
|
1122
|
+
...userConfig.openapi
|
|
1123
|
+
};
|
|
1124
|
+
if (openapi.route !== void 0) validateConfigRouteSource(openapi.route, "openapi.route");
|
|
1125
|
+
if (openapi.specRoute) validateConfigRouteSource(openapi.specRoute, "openapi.specRoute");
|
|
1126
|
+
const resolved = {
|
|
1127
|
+
[FARM_RESOLVED_CUSTOM_CONTEXT]: typeof userConfig.context === "function",
|
|
1128
|
+
root,
|
|
1129
|
+
srcDir,
|
|
1130
|
+
extends: userConfig.extends || [],
|
|
1131
|
+
layers: layerResolution.layers,
|
|
1132
|
+
outDir: userConfig.outDir || "dist",
|
|
1133
|
+
basePath,
|
|
1134
|
+
renderer: resolveFarmRenderer(userConfig.renderer),
|
|
1135
|
+
preset: deploy.preset || "node-server",
|
|
1136
|
+
deploy,
|
|
1137
|
+
docs,
|
|
1138
|
+
md,
|
|
1139
|
+
mdx,
|
|
1140
|
+
migrations: resolveMigrationsConfig(userConfig.migrations),
|
|
1141
|
+
cron,
|
|
1142
|
+
workflows: resolveWorkflowsConfig(userConfig.workflows),
|
|
1143
|
+
api,
|
|
1144
|
+
observability: userConfig.observability ?? false,
|
|
1145
|
+
telemetry: userConfig.telemetry !== false,
|
|
1146
|
+
analytics: userConfig.analytics !== false,
|
|
1147
|
+
devtools: resolveFarmDevtoolsConfig(userConfig.devtools, mode),
|
|
1148
|
+
storage: userConfig.storage || {},
|
|
1149
|
+
schema: resolveSchemaConfig(userConfig.schema),
|
|
1150
|
+
cache: userConfig.cache || {},
|
|
1151
|
+
auth,
|
|
1152
|
+
mcp,
|
|
1153
|
+
suppressLintOnLink: userConfig.suppressLintOnLink ?? false,
|
|
1154
|
+
experimental: {
|
|
1155
|
+
serverComponents: false,
|
|
1156
|
+
serverActions: false,
|
|
1157
|
+
// Islands mode hydrates client components as islands (RFC 0003); an app can still pick
|
|
1158
|
+
// isolatedClientHydration itself.
|
|
1159
|
+
isolatedClientHydration: resolveFarmServerComponentsMode(userConfig.experimental?.serverComponents) === "islands" ? "enabled" : "off",
|
|
1160
|
+
ppr: false,
|
|
1161
|
+
...userConfig.experimental
|
|
1162
|
+
},
|
|
1163
|
+
agent: resolveFarmAgentConfig(userConfig.agent, { docs: docs.enabled }),
|
|
1164
|
+
desktop: desktopSetup?.desktop ?? null,
|
|
1165
|
+
...userConfig.mobile !== void 0 ? { mobileClient: true } : {},
|
|
1166
|
+
plugins: [
|
|
1167
|
+
...mobileSessionPlugin ? [mobileSessionPlugin] : [],
|
|
1168
|
+
...nativeServerFnPlugin ? [nativeServerFnPlugin] : [],
|
|
1169
|
+
...resolveIntegrationPlugins(integrations),
|
|
1170
|
+
...nativeMCPPlugin ? [nativeMCPPlugin] : [],
|
|
1171
|
+
...userConfig.plugins || []
|
|
1172
|
+
],
|
|
1173
|
+
integrations,
|
|
1174
|
+
trailingSlash: userConfig.trailingSlash ?? false,
|
|
1175
|
+
redirects: () => [...redirects, ...routeRuleRedirects],
|
|
1176
|
+
rewrites: () => rewrites,
|
|
1177
|
+
headers: () => [
|
|
1178
|
+
...headers,
|
|
1179
|
+
...routeRuleHeaders,
|
|
1180
|
+
...securityHeader ? [{ source: "/*", headers: [securityHeader] }] : []
|
|
1181
|
+
],
|
|
1182
|
+
routeRules,
|
|
1183
|
+
images: resolveFarmImageConfig(userConfig.images),
|
|
1184
|
+
performance: resolveFarmPerformanceConfig(userConfig.performance),
|
|
1185
|
+
theme: resolveFarmThemeConfig(userConfig.theme, basePath),
|
|
1186
|
+
publicDir: userConfig.publicDir || "public",
|
|
1187
|
+
i18n: resolveFarmI18nConfig(userConfig.i18n, { root, mode, basePath }),
|
|
1188
|
+
openapi,
|
|
1189
|
+
middleware: validateMiddlewareConfig(userConfig.middleware) || {},
|
|
1190
|
+
notFound: userConfig.notFound || {},
|
|
1191
|
+
context: userConfig.context || (() => void 0),
|
|
1192
|
+
server: resolveFarmServerConfig(userConfig.server),
|
|
1193
|
+
serverActions: resolveServerActionsConfig(userConfig.serverActions),
|
|
1194
|
+
security,
|
|
1195
|
+
deploymentId,
|
|
1196
|
+
distDir: userConfig.distDir || ".farm",
|
|
1197
|
+
generateBuildId,
|
|
1198
|
+
compress: userConfig.compress ?? true,
|
|
1199
|
+
devIndicators: resolveFarmDevIndicatorsConfig(userConfig.devIndicators, mode),
|
|
1200
|
+
serverRuntimeConfig: userConfig.serverRuntimeConfig || {},
|
|
1201
|
+
publicRuntimeConfig: userConfig.publicRuntimeConfig || {},
|
|
1202
|
+
env,
|
|
1203
|
+
vite: typeof userConfig.vite === "function" ? userConfig.vite({}) : userConfig.vite || {}
|
|
1204
|
+
};
|
|
1205
|
+
assertPluginDependencies(resolved.plugins, resolved.integrations);
|
|
1206
|
+
if (nativeServerFnPlugin) {
|
|
1207
|
+
nativeServerFnAppDirs = (await import("./layers-T55SA47E.mjs")).getFarmAppDirectories(resolved);
|
|
1208
|
+
}
|
|
1209
|
+
return resolved;
|
|
1210
|
+
}
|
|
1211
|
+
function formatConfigLoadError(error) {
|
|
1212
|
+
if (error && (typeof error === "object" || typeof error === "function")) {
|
|
1213
|
+
for (const property of ["message", "stack", "name"]) {
|
|
1214
|
+
try {
|
|
1215
|
+
const value = Reflect.get(error, property);
|
|
1216
|
+
if (typeof value === "string" && value) return value;
|
|
1217
|
+
} catch {
|
|
1218
|
+
}
|
|
1219
|
+
}
|
|
1220
|
+
}
|
|
1221
|
+
try {
|
|
1222
|
+
return String(error);
|
|
1223
|
+
} catch {
|
|
1224
|
+
return "Unknown config loader error";
|
|
1225
|
+
}
|
|
1226
|
+
}
|
|
1227
|
+
async function loadConfig(rootDir, configPath, mode = process.env.NODE_ENV === "production" ? "production" : "development", loadEnvironment) {
|
|
1228
|
+
const { existsSync } = await import("fs");
|
|
1229
|
+
const loadEnv = loadEnvironment || (await import("vite")).loadEnv;
|
|
1230
|
+
const root = rootDir || process.cwd();
|
|
1231
|
+
const loadedEnv = loadEnv(mode, root, "");
|
|
1232
|
+
for (const [key, value] of Object.entries(loadedEnv)) {
|
|
1233
|
+
if (process.env[key] === void 0) {
|
|
1234
|
+
process.env[key] = value;
|
|
1235
|
+
}
|
|
1236
|
+
}
|
|
1237
|
+
if (configPath) {
|
|
1238
|
+
const explicitPath = path3.resolve(
|
|
1239
|
+
path3.isAbsolute(configPath) ? configPath : path3.join(root, configPath)
|
|
1240
|
+
);
|
|
1241
|
+
if (!existsSync(explicitPath)) {
|
|
1242
|
+
throw new Error(`Config file not found at ${configPath} (resolved to ${explicitPath}).`);
|
|
1243
|
+
}
|
|
1244
|
+
}
|
|
1245
|
+
const searchPaths = [
|
|
1246
|
+
configPath,
|
|
1247
|
+
"farm.config.ts",
|
|
1248
|
+
"farm.config.mts",
|
|
1249
|
+
"farm.config.js",
|
|
1250
|
+
"farm.config.mjs",
|
|
1251
|
+
"config.ts",
|
|
1252
|
+
"config.mts",
|
|
1253
|
+
"config.js",
|
|
1254
|
+
"config.mjs"
|
|
1255
|
+
].filter(Boolean);
|
|
1256
|
+
for (const relativePath of searchPaths) {
|
|
1257
|
+
try {
|
|
1258
|
+
const absolutePath = path3.isAbsolute(relativePath) ? relativePath : path3.join(root, relativePath);
|
|
1259
|
+
const normalizedPath = path3.resolve(absolutePath);
|
|
1260
|
+
if (!existsSync(normalizedPath)) {
|
|
1261
|
+
continue;
|
|
1262
|
+
}
|
|
1263
|
+
const loadedConfig = await loadFarmConfigFile(normalizedPath, { root });
|
|
1264
|
+
return loadedConfig.root === void 0 ? { ...loadedConfig, root } : loadedConfig;
|
|
1265
|
+
} catch (error) {
|
|
1266
|
+
const configError = new Error(
|
|
1267
|
+
`Failed to load config from ${relativePath}: ${formatConfigLoadError(error)}`
|
|
1268
|
+
);
|
|
1269
|
+
configError.cause = error;
|
|
1270
|
+
throw configError;
|
|
1271
|
+
}
|
|
1272
|
+
}
|
|
1273
|
+
return void 0;
|
|
1274
|
+
}
|
|
1275
|
+
|
|
1276
|
+
export {
|
|
1277
|
+
resolveFarmMCPConfig,
|
|
1278
|
+
resolveFarmMCPPlugin,
|
|
1279
|
+
hasCustomFarmRouteContext,
|
|
1280
|
+
isResolvedFarmConfig,
|
|
1281
|
+
normalizeDeployTarget,
|
|
1282
|
+
getPresetForDeployTarget,
|
|
1283
|
+
getDeployTargetForPreset,
|
|
1284
|
+
getDefaultDeployOutputDir,
|
|
1285
|
+
resolveDeployOutputPath,
|
|
1286
|
+
resolveDeployConfig,
|
|
1287
|
+
resolveMigrationsConfig,
|
|
1288
|
+
resolveDocsConfig,
|
|
1289
|
+
resolveConfig,
|
|
1290
|
+
loadConfig
|
|
1291
|
+
};
|