@farm.js/core 0.1.48 → 0.1.50
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/{agent-mcp-DAjB8Eyu.d.ts → agent-mcp-9BMbRgg_.d.ts} +1 -1
- package/dist/{agent-mcp-CXN3g0eX.d.mts → agent-mcp-CIMH324y.d.mts} +1 -1
- package/dist/agent-runtime.cjs +3 -3
- package/dist/agent-runtime.d.mts +6 -6
- package/dist/agent-runtime.d.ts +6 -6
- package/dist/agent-runtime.mjs +2 -2
- package/dist/analyzer-CN7C74WX.cjs +1066 -0
- package/dist/analyzer-DDW34OMC.mjs +1066 -0
- package/dist/api/client.d.mts +0 -1
- package/dist/api/client.d.ts +0 -1
- package/dist/api/route-manager.cjs +5 -5
- package/dist/api/route-manager.d.mts +10 -10
- package/dist/api/route-manager.d.ts +10 -10
- package/dist/api/route-manager.mjs +4 -4
- package/dist/api/runtime.cjs +3 -3
- package/dist/api/runtime.d.mts +7 -7
- package/dist/api/runtime.d.ts +7 -7
- package/dist/api/runtime.mjs +2 -2
- package/dist/api.cjs +6 -6
- package/dist/api.d.mts +10 -10
- package/dist/api.d.ts +10 -10
- package/dist/api.mjs +5 -5
- package/dist/{app-VK9sHDn5.d.ts → app-BWibTHVT.d.ts} +7 -7
- package/dist/{app-DytgRPjJ.d.mts → app-DVJ13FPA.d.mts} +7 -7
- package/dist/{app-manifest-DPgW5ke5.d.mts → app-manifest-CQDJOKL2.d.mts} +1 -1
- package/dist/{app-manifest-BUu7YGAx.d.ts → app-manifest-D0kaXdwu.d.ts} +1 -1
- package/dist/app-markdown.d.mts +7 -7
- package/dist/app-markdown.d.ts +7 -7
- package/dist/cache.d.mts +4 -3
- package/dist/cache.d.ts +4 -3
- package/dist/{chunk-VJXLUTBM.mjs → chunk-2DEPNLXK.mjs} +7 -7
- package/dist/chunk-2G63BIRL.mjs +227 -0
- package/dist/chunk-2GLQSIZD.mjs +55 -0
- package/dist/{chunk-HRLYO2XJ.mjs → chunk-2VCC3GVC.mjs} +1 -1
- package/dist/chunk-3ATXWZPH.cjs +227 -0
- package/dist/{chunk-YSPMY4B7.cjs → chunk-474FO3UE.cjs} +233 -157
- package/dist/{chunk-QNQEK3OF.cjs → chunk-4T25YCZ5.cjs} +14 -14
- package/dist/{chunk-ATHPRVP2.mjs → chunk-5V4KZOZO.mjs} +1 -1
- package/dist/{chunk-FGJQS4EC.cjs → chunk-6QA2SXVH.cjs} +2 -2
- package/dist/{chunk-XLYXG73A.mjs → chunk-75WWOZ5C.mjs} +22 -0
- package/dist/{chunk-QFQDRJKJ.mjs → chunk-76R5GJER.mjs} +2 -2
- package/dist/{chunk-NG44F7AH.mjs → chunk-7ONZDKVY.mjs} +2 -2
- package/dist/{chunk-MZZA6ZQV.mjs → chunk-7PZVXMWG.mjs} +4 -4
- package/dist/{chunk-4IICUBQX.cjs → chunk-A5BJKSZE.cjs} +2 -2
- package/dist/{chunk-TTYXOAB7.mjs → chunk-ANHZ6SUL.mjs} +1 -1
- package/dist/{chunk-ZBS3GOQZ.cjs → chunk-AQLHD6HZ.cjs} +35 -61
- package/dist/{chunk-Q2ZKQ6GD.cjs → chunk-B5S2JS6M.cjs} +127 -125
- package/dist/{chunk-AXRNEVCS.cjs → chunk-B6PREBN6.cjs} +8 -8
- package/dist/{chunk-JOHXK4BB.mjs → chunk-BW6SCVYX.mjs} +1 -1
- package/dist/{chunk-LZBM35DH.mjs → chunk-C73RIAEF.mjs} +4 -4
- package/dist/chunk-CGCJ2TJU.cjs +55 -0
- package/dist/{chunk-UYQOIPXE.mjs → chunk-CPXDDWGL.mjs} +1 -1
- package/dist/{chunk-JPAVNDZH.cjs → chunk-CY7H5KS4.cjs} +25 -25
- package/dist/{chunk-4S7M63WX.cjs → chunk-DGOLAZLV.cjs} +22 -1
- package/dist/{chunk-73XBJRZW.cjs → chunk-E2BMCNMJ.cjs} +2 -2
- package/dist/{chunk-WUEDTW6E.cjs → chunk-F5LERVY3.cjs} +23 -5
- package/dist/{chunk-A7DK663W.cjs → chunk-FACTMUPI.cjs} +27 -27
- package/dist/chunk-G2KTRMWA.mjs +40 -0
- package/dist/{chunk-C6U66WWF.mjs → chunk-GFT5AHAT.mjs} +13 -0
- package/dist/{chunk-ZGS3ZDF7.cjs → chunk-GOOK2J2W.cjs} +7 -7
- package/dist/{chunk-NW2BKDVT.mjs → chunk-HHFMECFO.mjs} +1 -1
- package/dist/{chunk-6M3HXUBQ.mjs → chunk-HWCHIBJZ.mjs} +21 -3
- package/dist/{chunk-HUL4LTC6.cjs → chunk-HYN3LLG7.cjs} +63 -20
- package/dist/{chunk-HELQXYVI.cjs → chunk-I2DQGS56.cjs} +11 -9
- package/dist/{chunk-SSNN55Q6.cjs → chunk-IQXGHGZF.cjs} +5 -5
- package/dist/{chunk-ZSIGEHSE.cjs → chunk-IUBDMDZZ.cjs} +21 -180
- package/dist/{chunk-TQWGOQ7O.mjs → chunk-IWJKJDNW.mjs} +116 -40
- package/dist/{chunk-NRFUVDTH.mjs → chunk-JJOWY3XD.mjs} +2 -2
- package/dist/{chunk-6XFGJBYX.cjs → chunk-JYNNIGQO.cjs} +16 -7
- package/dist/{chunk-XO6WL6NL.mjs → chunk-KGP76FSV.mjs} +1 -1
- package/dist/{chunk-GXSMF7UR.mjs → chunk-KO2NWUKN.mjs} +1 -1
- package/dist/{chunk-VDLF2DJA.cjs → chunk-KZH6YLND.cjs} +375 -162
- package/dist/{chunk-5566GNEG.cjs → chunk-LIFUPCXW.cjs} +13 -0
- package/dist/{chunk-I2SWKWO7.mjs → chunk-LJDIFIJ2.mjs} +1 -1
- package/dist/{chunk-KZT2VHRQ.cjs → chunk-LYWAGXXW.cjs} +11 -11
- package/dist/{chunk-N6SIQJEJ.mjs → chunk-M7LKA632.mjs} +54 -11
- package/dist/{chunk-6LH33DLL.cjs → chunk-NJVFPJ2Y.cjs} +2 -2
- package/dist/{chunk-JWP56HCP.mjs → chunk-OD6WM3I7.mjs} +2 -2
- package/dist/{chunk-MJ6IC4K2.mjs → chunk-OTOOJIUB.mjs} +1 -1
- package/dist/{chunk-TFA6BUAE.cjs → chunk-OY5XDG24.cjs} +4 -4
- package/dist/{chunk-R2SEZEBC.cjs → chunk-OYNNA4DD.cjs} +4 -4
- package/dist/{chunk-GBPDSUFE.mjs → chunk-OZK2DS44.mjs} +1 -1
- package/dist/chunk-QXJADAQB.cjs +40 -0
- package/dist/{chunk-JLS6ZLFM.cjs → chunk-RHOR2J6V.cjs} +1 -1
- package/dist/{chunk-YQGZLCT4.cjs → chunk-RWT2BTJT.cjs} +6 -6
- package/dist/{chunk-3HBFI373.cjs → chunk-S5AQ7CAC.cjs} +14 -14
- package/dist/{chunk-HNAUK3SC.mjs → chunk-SHJJM6OG.mjs} +40 -199
- package/dist/{chunk-LL7TDMOM.mjs → chunk-SMUW7UST.mjs} +33 -59
- package/dist/{chunk-VCFBQFOV.mjs → chunk-SN5VSO3Q.mjs} +9 -7
- package/dist/{chunk-DM3TFCC2.cjs → chunk-SUV6YO4Q.cjs} +5 -5
- package/dist/{chunk-JUMPFVMK.mjs → chunk-TUOO6IK3.mjs} +9 -0
- package/dist/chunk-UB7RVEMX.mjs +73 -0
- package/dist/{chunk-CDTIXBKN.mjs → chunk-UN6N623E.mjs} +2 -2
- package/dist/{chunk-BEXYFR2R.cjs → chunk-UY6HS5PF.cjs} +2 -2
- package/dist/{chunk-HAH4FBTA.mjs → chunk-VAHBCI6X.mjs} +1 -1
- package/dist/{chunk-C2R5RVLA.cjs → chunk-VCKGOXFI.cjs} +73 -1
- package/dist/{chunk-N25RPPO5.cjs → chunk-WAPQWAE6.cjs} +10 -10
- package/dist/{chunk-NE33FRQ5.mjs → chunk-WVBUXNBX.mjs} +274 -61
- package/dist/{chunk-ALD2WMLA.mjs → chunk-WXHDVXJE.mjs} +2 -2
- package/dist/{chunk-EVCQX243.cjs → chunk-X2EL3BLH.cjs} +2 -2
- package/dist/{chunk-EA5PMJDU.mjs → chunk-X3HOVNHI.mjs} +1 -1
- package/dist/{chunk-XXB37YET.cjs → chunk-XLRLSTJ6.cjs} +7 -7
- package/dist/{chunk-DRFADSKY.mjs → chunk-XXXRRVY6.mjs} +4 -4
- package/dist/{chunk-EXHEPWFJ.cjs → chunk-YAXOEAND.cjs} +10 -10
- package/dist/{chunk-PEHL3IZL.cjs → chunk-YB44NKC2.cjs} +2 -2
- package/dist/chunk-YKHRCY4T.cjs +73 -0
- package/dist/{chunk-NIPKC4DA.mjs → chunk-ZIBIE7AH.mjs} +72 -0
- package/dist/{chunk-N7SPZJLY.mjs → chunk-ZLOQQ2UF.mjs} +33 -31
- package/dist/client/lifecycle.d.mts +1 -1
- package/dist/client/lifecycle.d.ts +1 -1
- package/dist/{client-plugins-DqjCsKMN.d.ts → client-plugins-BPfltM5m.d.ts} +19 -10
- package/dist/{client-plugins-BlEzV5FO.d.mts → client-plugins-D4RO59f0.d.mts} +19 -10
- package/dist/client-plugins.d.mts +6 -6
- package/dist/client-plugins.d.ts +6 -6
- package/dist/client.cjs +11 -8
- package/dist/client.d.mts +11 -10
- package/dist/client.d.ts +11 -10
- package/dist/client.mjs +12 -9
- package/dist/client.react-server.mjs +1 -1
- package/dist/config-CnhyvvmT.d.mts +188 -0
- package/dist/config-CnhyvvmT.d.ts +188 -0
- package/dist/config.d.mts +6 -6
- package/dist/config.d.ts +6 -6
- package/dist/desktop.d.mts +7 -7
- package/dist/desktop.d.ts +7 -7
- package/dist/{dev-guard-MPZUJFIV.mjs → dev-guard-4PFQNXQX.mjs} +4 -2
- package/dist/{dev-guard-4NQ3LFO5.cjs → dev-guard-YLO5DE3H.cjs} +7 -5
- package/dist/{devtools-A37WWJZL.cjs → devtools-N5XTOECL.cjs} +8 -8
- package/dist/{devtools-BLKHPY3C.mjs → devtools-STG7HPRV.mjs} +7 -7
- package/dist/docs.cjs +10 -10
- package/dist/docs.d.mts +7 -7
- package/dist/docs.d.ts +7 -7
- package/dist/docs.mjs +9 -9
- package/dist/environment/vite.d.mts +1 -1
- package/dist/environment/vite.d.ts +1 -1
- package/dist/generate-route-types-DQP0cUzk.d.ts +33 -0
- package/dist/generate-route-types-TF5Wwtvz.d.mts +33 -0
- package/dist/i18n/client.d.mts +2 -2
- package/dist/i18n/client.d.ts +2 -2
- package/dist/i18n/index.d.mts +3 -3
- package/dist/i18n/index.d.ts +3 -3
- package/dist/i18n/server.d.mts +5 -5
- package/dist/i18n/server.d.ts +5 -5
- package/dist/image/server.cjs +3 -3
- package/dist/image/server.mjs +2 -2
- package/dist/image/sharp.cjs +10 -10
- package/dist/image/sharp.mjs +2 -2
- package/dist/{index-CMigAr9f.d.mts → index-C-N3Pwg-.d.ts} +2 -2
- package/dist/{index-MocnSP3a.d.ts → index-D3l4tREW.d.ts} +2 -2
- package/dist/{index-Cl3akY5U.d.mts → index-DPUAPho_.d.mts} +2 -2
- package/dist/{index-n3hjOvVC.d.ts → index-k8o8eUOd.d.mts} +2 -2
- package/dist/index.cjs +73 -66
- package/dist/index.d.mts +29 -45
- package/dist/index.d.ts +29 -45
- package/dist/index.mjs +78 -71
- package/dist/integrations.cjs +3 -3
- package/dist/integrations.d.mts +6 -6
- package/dist/integrations.d.ts +6 -6
- package/dist/integrations.mjs +2 -2
- package/dist/internal/app-markdown-runtime.d.mts +7 -7
- package/dist/internal/app-markdown-runtime.d.ts +7 -7
- package/dist/internal/build-runtime.cjs +36 -32
- package/dist/internal/build-runtime.d.mts +9 -9
- package/dist/internal/build-runtime.d.ts +9 -9
- package/dist/internal/build-runtime.mjs +35 -31
- package/dist/internal/cli-runtime.cjs +16 -15
- package/dist/internal/cli-runtime.mjs +16 -15
- package/dist/internal/client-error-overlay.cjs +4 -4
- package/dist/internal/client-error-overlay.mjs +1 -1
- package/dist/internal/client-runtime.cjs +19 -2
- package/dist/internal/client-runtime.d.mts +45 -3
- package/dist/internal/client-runtime.d.ts +45 -3
- package/dist/internal/client-runtime.mjs +19 -2
- package/dist/internal/compression-runtime.d.mts +6 -6
- package/dist/internal/compression-runtime.d.ts +6 -6
- package/dist/internal/config-runtime.cjs +17 -10
- package/dist/internal/config-runtime.d.mts +259 -18
- package/dist/internal/config-runtime.d.ts +259 -18
- package/dist/internal/config-runtime.mjs +15 -8
- package/dist/internal/desktop-guard.cjs +2 -2
- package/dist/internal/desktop-guard.d.mts +7 -0
- package/dist/internal/desktop-guard.d.ts +7 -0
- package/dist/internal/desktop-guard.mjs +1 -1
- package/dist/internal/form-actions.cjs +4 -4
- package/dist/internal/form-actions.mjs +3 -3
- package/dist/internal/infra-analytics-runtime.cjs +6 -6
- package/dist/internal/infra-analytics-runtime.mjs +4 -4
- package/dist/internal/islands-runtime.cjs +4 -1
- package/dist/internal/islands-runtime.d.mts +9 -12
- package/dist/internal/islands-runtime.d.ts +9 -12
- package/dist/internal/islands-runtime.mjs +5 -2
- package/dist/internal/metadata-image-runtime.cjs +3 -3
- package/dist/internal/metadata-image-runtime.mjs +2 -2
- package/dist/internal/product-telemetry-runtime.cjs +2 -2
- package/dist/internal/product-telemetry-runtime.mjs +1 -1
- package/dist/internal/production-runtime.cjs +13 -13
- package/dist/internal/production-runtime.d.mts +19 -19
- package/dist/internal/production-runtime.d.ts +19 -19
- package/dist/internal/production-runtime.mjs +15 -15
- package/dist/{layers-D9fbe-rz.d.ts → layers-CcS42OGR.d.mts} +1 -1
- package/dist/{layers-D9fbe-rz.d.mts → layers-CcS42OGR.d.ts} +1 -1
- package/dist/{lifecycle-DK06VuKP.d.ts → lifecycle-C2aLBOwu.d.mts} +1 -1
- package/dist/{lifecycle-DK06VuKP.d.mts → lifecycle-C2aLBOwu.d.ts} +1 -1
- package/dist/markdown.d.mts +6 -6
- package/dist/markdown.d.ts +6 -6
- package/dist/middleware.cjs +7 -7
- package/dist/middleware.d.mts +8 -8
- package/dist/middleware.d.ts +8 -8
- package/dist/middleware.mjs +6 -6
- package/dist/mobile.cjs +9 -0
- package/dist/mobile.d.mts +67 -0
- package/dist/mobile.d.ts +67 -0
- package/dist/mobile.mjs +9 -0
- package/dist/navigation-delegate-8xg3Zvp4.d.ts +29 -0
- package/dist/navigation-delegate-ji6elCKy.d.mts +29 -0
- package/dist/navigation.cjs +5 -5
- package/dist/navigation.d.mts +9 -9
- package/dist/navigation.d.ts +9 -9
- package/dist/navigation.mjs +4 -4
- package/dist/{nitro-UT2J5A5D.mjs → nitro-2Q5NVY7L.mjs} +2 -2
- package/dist/{nitro-BIXIKJZS.cjs → nitro-YPSZBYDK.cjs} +3 -3
- package/dist/platform.cjs +2 -1
- package/dist/platform.d.mts +4 -3
- package/dist/platform.d.ts +4 -3
- package/dist/platform.mjs +2 -1
- package/dist/{plugin-4KYXV7BB.mjs → plugin-53SY5YBS.mjs} +1 -1
- package/dist/{plugin-WBANOZQM.cjs → plugin-HZIBL3DW.cjs} +2 -2
- package/dist/plugin.cjs +31 -29
- package/dist/plugin.d.mts +13 -8
- package/dist/plugin.d.ts +13 -8
- package/dist/plugin.mjs +30 -28
- package/dist/{production-runtime-bWZJMcQb.d.mts → production-runtime-DXnQQkQf.d.mts} +3 -3
- package/dist/{production-runtime-YVDGYWBG.d.ts → production-runtime-TdKaYRj0.d.ts} +3 -3
- package/dist/production-vite-BQFAlG7n.d.mts +13 -0
- package/dist/production-vite-BQFAlG7n.d.ts +13 -0
- package/dist/{programmatic-routes-client-DviwGeAv.d.ts → programmatic-routes-client-BwiTndEC.d.ts} +2 -2
- package/dist/{programmatic-routes-client-BFKOTEXN.d.mts → programmatic-routes-client-Dh1SDLSM.d.mts} +2 -2
- package/dist/query/client.cjs +6 -6
- package/dist/query/client.mjs +2 -2
- package/dist/{render-plan-DqWXo3-B.d.ts → render-plan-BPbwRbuN.d.ts} +1 -1
- package/dist/{render-plan-CS8l0zaK.d.mts → render-plan-BvCGXF6K.d.mts} +1 -1
- package/dist/renderer-client.cjs +9 -6
- package/dist/renderer-client.d.mts +9 -8
- package/dist/renderer-client.d.ts +9 -8
- package/dist/renderer-client.mjs +6 -3
- package/dist/{request-CBrHpaCC.d.ts → request-B8PGTZNR.d.ts} +1 -1
- package/dist/{request-D4XqmnJF.d.mts → request-C_xTkJib.d.mts} +1 -1
- package/dist/request.d.mts +7 -7
- package/dist/request.d.ts +7 -7
- package/dist/{resolver-DC57A4vz.d.ts → resolver-CJ-D9nP-.d.ts} +1 -1
- package/dist/{resolver-C2G-3Tm6.d.mts → resolver-TDyZKgKI.d.mts} +1 -1
- package/dist/{route-rendering-3pRPtyO2.d.mts → route-rendering-DlddURL1.d.mts} +1 -1
- package/dist/{route-rendering-Bltnu8a3.d.ts → route-rendering-RNtcj607.d.ts} +1 -1
- package/dist/{router-BFSmKGtI.d.mts → router-B97eB0Mq.d.mts} +1 -1
- package/dist/{router-DDT7bkg7.d.ts → router-qUVaoEN8.d.ts} +1 -1
- package/dist/routes-8PT9cl60.d.ts +121 -0
- package/dist/routes-kEUsXHx3.d.mts +121 -0
- package/dist/routes.d.mts +6 -6
- package/dist/routes.d.ts +6 -6
- package/dist/{rsc-pipeline-4KOITP64.cjs → rsc-pipeline-L4XOZ2TE.cjs} +13 -10
- package/dist/{rsc-pipeline-ULFIB3UT.mjs → rsc-pipeline-T3775JUA.mjs} +12 -9
- package/dist/runtime-BIBGJO7V.cjs +1005 -0
- package/dist/{runtime-B9HmxiZc.d.ts → runtime-C4CmlOOh.d.ts} +2 -2
- package/dist/{runtime-C6yG64je.d.ts → runtime-C8GUnNeP.d.ts} +1 -1
- package/dist/{runtime-Cpylaypt.d.mts → runtime-CaDswfWi.d.mts} +1 -1
- package/dist/{runtime-CCxTmGuf.d.mts → runtime-CihDZ2Rn.d.mts} +2 -2
- package/dist/runtime-HRSFC4ZC.mjs +1005 -0
- package/dist/{schema-dev-notice-O3I5HLXK.mjs → schema-dev-notice-LZ5NXGLN.mjs} +2 -2
- package/dist/{schema-dev-notice-Z73J3NJ6.cjs → schema-dev-notice-XV7GZ3QJ.cjs} +4 -4
- package/dist/server-action-security.cjs +3 -3
- package/dist/server-action-security.mjs +2 -2
- package/dist/server-fn-client.d.mts +0 -1
- package/dist/server-fn-client.d.ts +0 -1
- package/dist/server-fn.cjs +4 -4
- package/dist/server-fn.d.mts +0 -1
- package/dist/server-fn.d.ts +0 -1
- package/dist/server-fn.mjs +3 -3
- package/dist/server-plugins.cjs +1 -1
- package/dist/server-plugins.d.mts +7 -7
- package/dist/server-plugins.d.ts +7 -7
- package/dist/server-plugins.mjs +1 -1
- package/dist/server-query-client.d.mts +0 -1
- package/dist/server-query-client.d.ts +0 -1
- package/dist/server-query.cjs +5 -5
- package/dist/server-query.d.mts +0 -1
- package/dist/server-query.d.ts +0 -1
- package/dist/server-query.mjs +4 -4
- package/dist/server.cjs +89 -66
- package/dist/server.d.mts +22 -17
- package/dist/server.d.ts +22 -17
- package/dist/server.mjs +64 -41
- package/dist/{spa-router-CkTPnA4L.d.mts → spa-router-Dlv5ofg0.d.mts} +4 -4
- package/dist/{spa-router-CKuS81mi.d.ts → spa-router-qapSboKz.d.ts} +4 -4
- package/dist/testing.cjs +7 -7
- package/dist/testing.d.mts +6 -6
- package/dist/testing.d.ts +6 -6
- package/dist/testing.mjs +5 -5
- package/dist/{types--Wh02r5_.d.mts → types-C41ePjvP.d.mts} +1 -1
- package/dist/{types--Wh02r5_.d.ts → types-C41ePjvP.d.ts} +1 -1
- package/dist/{utils-C0ORLYXc.d.ts → utils-A-cYF81u.d.ts} +1 -1
- package/dist/{utils-IA9wVkef.d.mts → utils-DyvlSxFk.d.mts} +1 -1
- package/dist/version.cjs +2 -2
- package/dist/version.mjs +1 -1
- package/dist/vite.cjs +31 -29
- package/dist/vite.d.mts +9 -9
- package/dist/vite.d.ts +9 -9
- package/dist/vite.mjs +30 -28
- package/dist/{workflows-Df1C_7OG.d.mts → workflows-CRMzQZ3k.d.mts} +2 -1
- package/dist/{workflows-Df1C_7OG.d.ts → workflows-CRMzQZ3k.d.ts} +2 -1
- package/dist/workflows.cjs +3 -3
- package/dist/workflows.d.mts +1 -1
- package/dist/workflows.d.ts +1 -1
- package/dist/workflows.mjs +2 -2
- package/package.json +10 -2
- package/dist/cache-invalidation-BD0z_lfu.d.mts +0 -4
- package/dist/cache-invalidation-BD0z_lfu.d.ts +0 -4
- package/dist/chunk-45EUIICW.mjs +0 -15
- package/dist/chunk-V7KTQR4C.cjs +0 -15
- package/dist/{chunk-BR5FSKZ5.cjs → chunk-EQWWOQTK.cjs} +0 -0
- package/dist/{chunk-5OJVKXFV.cjs → chunk-N7JQXQAV.cjs} +2 -2
- package/dist/{chunk-VR4SEDEM.mjs → chunk-VOZ5DI7D.mjs} +0 -0
- package/dist/{chunk-72KABRWN.mjs → chunk-WSDKXV4E.mjs} +4 -4
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
loadFarmProductionVite
|
|
3
|
-
} from "./chunk-PSUYE5HR.mjs";
|
|
4
1
|
import {
|
|
5
2
|
FARM_DESKTOP_ENV_MODULE_FILE,
|
|
6
3
|
FARM_DESKTOP_ENV_MODULE_SOURCE,
|
|
@@ -10,6 +7,9 @@ import {
|
|
|
10
7
|
createFarmNodeServerEntry,
|
|
11
8
|
withProductionNodeEnv
|
|
12
9
|
} from "./chunk-VU3MYZPO.mjs";
|
|
10
|
+
import {
|
|
11
|
+
loadFarmProductionVite
|
|
12
|
+
} from "./chunk-PSUYE5HR.mjs";
|
|
13
13
|
import {
|
|
14
14
|
generateNativeMCPPluginSource
|
|
15
15
|
} from "./chunk-KQH2COEJ.mjs";
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
compileFarmDocsAdapterEdgeManifest,
|
|
19
19
|
createFarmDocsAPIHandler,
|
|
20
20
|
hasFarmDocsRuntimeAdapter
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-76R5GJER.mjs";
|
|
22
22
|
import {
|
|
23
23
|
FARM_DOCS_LAST_MODIFIED_MANIFEST,
|
|
24
24
|
createFarmDocsHandler,
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
loadFarmDocsPage,
|
|
30
30
|
resolveFarmDocsContentDir,
|
|
31
31
|
toFarmDocsMarkdownPage
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-KO2NWUKN.mjs";
|
|
33
33
|
import {
|
|
34
34
|
generateFarmDocsSearchClientRuntime,
|
|
35
35
|
isFarmDocsSearchEnabled,
|
|
@@ -37,7 +37,7 @@ import {
|
|
|
37
37
|
} from "./chunk-WB6XES4V.mjs";
|
|
38
38
|
import {
|
|
39
39
|
FARM_PRERENDER_ENV
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-M7LKA632.mjs";
|
|
41
41
|
import {
|
|
42
42
|
resolveFarmInstrumentationFile
|
|
43
43
|
} from "./chunk-N35YPV4N.mjs";
|
|
@@ -52,7 +52,7 @@ import {
|
|
|
52
52
|
getDeployTargetForPreset,
|
|
53
53
|
hasCustomFarmRouteContext,
|
|
54
54
|
resolveDeployOutputPath
|
|
55
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-2DEPNLXK.mjs";
|
|
56
56
|
import {
|
|
57
57
|
DEFAULT_NOT_FOUND_STYLES,
|
|
58
58
|
FARM_LAYOUT_ELEMENT_CLIENT_SOURCE,
|
|
@@ -84,7 +84,7 @@ import {
|
|
|
84
84
|
resolveFarmIsolatedClientHydrationMode,
|
|
85
85
|
resolveFarmNotFoundComponentPath,
|
|
86
86
|
usesFarmServerTree
|
|
87
|
-
} from "./chunk-
|
|
87
|
+
} from "./chunk-IWJKJDNW.mjs";
|
|
88
88
|
import {
|
|
89
89
|
loadTailwindVitePlugin
|
|
90
90
|
} from "./chunk-XLLVWLWO.mjs";
|
|
@@ -95,7 +95,7 @@ import {
|
|
|
95
95
|
generateFarmTypeArtifacts,
|
|
96
96
|
readRouteRenderingDirectiveFromFile,
|
|
97
97
|
resolveRouteRenderingConfigFromFile
|
|
98
|
-
} from "./chunk-
|
|
98
|
+
} from "./chunk-SHJJM6OG.mjs";
|
|
99
99
|
import {
|
|
100
100
|
HOISTED_HEAD_ELEMENT,
|
|
101
101
|
appMiddlewareMayHandlePath,
|
|
@@ -108,10 +108,13 @@ import {
|
|
|
108
108
|
layoutsCanCoverSamePage,
|
|
109
109
|
routeBoundaryCoversDirectory,
|
|
110
110
|
stripRouteGroups
|
|
111
|
-
} from "./chunk-
|
|
111
|
+
} from "./chunk-ZIBIE7AH.mjs";
|
|
112
112
|
import {
|
|
113
113
|
farmPluginMayAffectRuntimePath
|
|
114
114
|
} from "./chunk-UUMKLGUU.mjs";
|
|
115
|
+
import {
|
|
116
|
+
isFarmPreviewDeploymentEnvironment
|
|
117
|
+
} from "./chunk-CSLUBKGG.mjs";
|
|
115
118
|
import {
|
|
116
119
|
FARM_API_CATALOG_PATH,
|
|
117
120
|
FARM_APP_MANIFEST_LEGACY_PATH,
|
|
@@ -119,18 +122,18 @@ import {
|
|
|
119
122
|
listFarmBuiltInRoutePaths,
|
|
120
123
|
resolveFarmApiCatalogInput,
|
|
121
124
|
resolveFarmAppManifestInput
|
|
122
|
-
} from "./chunk-
|
|
125
|
+
} from "./chunk-JJOWY3XD.mjs";
|
|
123
126
|
import {
|
|
124
127
|
FARM_DEFAULT_MCP_PATH,
|
|
125
128
|
createFarmDefaultMCPServer,
|
|
126
129
|
farmConfigMountsMCP
|
|
127
130
|
} from "./chunk-KRRZJ77U.mjs";
|
|
128
|
-
import {
|
|
129
|
-
isFarmPreviewDeploymentEnvironment
|
|
130
|
-
} from "./chunk-CSLUBKGG.mjs";
|
|
131
131
|
import {
|
|
132
132
|
farmEnvironmentFunctionsPlugin
|
|
133
133
|
} from "./chunk-C5JXCUKR.mjs";
|
|
134
|
+
import {
|
|
135
|
+
isFarmMarkdownPageFile
|
|
136
|
+
} from "./chunk-GW4YUIHW.mjs";
|
|
134
137
|
import {
|
|
135
138
|
generateFarmDocsAdapterClientRuntime,
|
|
136
139
|
getFarmDocsAdapterConfigModule
|
|
@@ -164,10 +167,14 @@ import {
|
|
|
164
167
|
import {
|
|
165
168
|
getFarmAppDirectories
|
|
166
169
|
} from "./chunk-52Y3C3HG.mjs";
|
|
170
|
+
import {
|
|
171
|
+
resolveFarmMdxComponentsModulePath,
|
|
172
|
+
resolveMdxConfig
|
|
173
|
+
} from "./chunk-UIJOLBUL.mjs";
|
|
167
174
|
import {
|
|
168
175
|
applyFarmWorkflowVercelCrons,
|
|
169
176
|
prepareFarmWorkflowsForNitro
|
|
170
|
-
} from "./chunk-
|
|
177
|
+
} from "./chunk-5V4KZOZO.mjs";
|
|
171
178
|
import {
|
|
172
179
|
applyFarmCronVercelCrons,
|
|
173
180
|
createFarmCronCloudflareConfig,
|
|
@@ -176,14 +183,7 @@ import {
|
|
|
176
183
|
} from "./chunk-UCQ52TJY.mjs";
|
|
177
184
|
import {
|
|
178
185
|
resolveServerActionsConfig
|
|
179
|
-
} from "./chunk-
|
|
180
|
-
import {
|
|
181
|
-
isFarmMarkdownPageFile
|
|
182
|
-
} from "./chunk-GW4YUIHW.mjs";
|
|
183
|
-
import {
|
|
184
|
-
resolveFarmMdxComponentsModulePath,
|
|
185
|
-
resolveMdxConfig
|
|
186
|
-
} from "./chunk-UIJOLBUL.mjs";
|
|
186
|
+
} from "./chunk-BW6SCVYX.mjs";
|
|
187
187
|
import {
|
|
188
188
|
getFarmMarkdownAlternatePath
|
|
189
189
|
} from "./chunk-N77JBPLC.mjs";
|
|
@@ -193,7 +193,7 @@ import {
|
|
|
193
193
|
import {
|
|
194
194
|
getFarmIntegrationPluginServerRuntime,
|
|
195
195
|
getIntegrationProviders
|
|
196
|
-
} from "./chunk-
|
|
196
|
+
} from "./chunk-HHFMECFO.mjs";
|
|
197
197
|
import {
|
|
198
198
|
FARM_INTEGRATION_API_BASE_PATH_KEY
|
|
199
199
|
} from "./chunk-F6TLUMH7.mjs";
|
|
@@ -204,7 +204,7 @@ import {
|
|
|
204
204
|
} from "./chunk-4HBKBHVP.mjs";
|
|
205
205
|
import {
|
|
206
206
|
APIRouteManager
|
|
207
|
-
} from "./chunk-
|
|
207
|
+
} from "./chunk-WXHDVXJE.mjs";
|
|
208
208
|
import {
|
|
209
209
|
readFarmI18nCatalogs
|
|
210
210
|
} from "./chunk-DU4VHHPJ.mjs";
|
|
@@ -231,7 +231,7 @@ import {
|
|
|
231
231
|
} from "./chunk-LM2YOGDK.mjs";
|
|
232
232
|
import {
|
|
233
233
|
FARM_VERSION
|
|
234
|
-
} from "./chunk-
|
|
234
|
+
} from "./chunk-2VCC3GVC.mjs";
|
|
235
235
|
import {
|
|
236
236
|
getFarmPresetRuntime
|
|
237
237
|
} from "./chunk-UAQD67HM.mjs";
|
|
@@ -954,7 +954,7 @@ export default async function farmNetlifyHandler(request, context) {
|
|
|
954
954
|
// src/build/strip-platform-config.ts
|
|
955
955
|
import { realpathSync } from "fs";
|
|
956
956
|
import path8 from "path";
|
|
957
|
-
var PLATFORM_CONFIG_KEYS = /* @__PURE__ */ new Set(["desktop"]);
|
|
957
|
+
var PLATFORM_CONFIG_KEYS = /* @__PURE__ */ new Set(["desktop", "mobile"]);
|
|
958
958
|
var CONFIG_FACTORIES = /* @__PURE__ */ new Set(["defineConfig", "defineFarmConfig"]);
|
|
959
959
|
function isConfigObject(node) {
|
|
960
960
|
return node?.type === "ObjectExpression";
|
|
@@ -989,23 +989,33 @@ function collectConfigObjects(node, found) {
|
|
|
989
989
|
}
|
|
990
990
|
}
|
|
991
991
|
function stripPlatformConfigSource(code, parse) {
|
|
992
|
-
if (!code.includes("desktop")) return null;
|
|
992
|
+
if (!code.includes("desktop") && !code.includes("mobile")) return null;
|
|
993
993
|
const objects = [];
|
|
994
994
|
collectConfigObjects(parse(code), objects);
|
|
995
995
|
const removals = [];
|
|
996
996
|
for (const object of objects) {
|
|
997
997
|
const properties = object.properties;
|
|
998
|
-
properties.
|
|
998
|
+
const removed = properties.map((property) => {
|
|
999
999
|
const name = propertyName(property);
|
|
1000
|
-
|
|
1001
|
-
if (index < properties.length - 1)
|
|
1002
|
-
removals.push([property.start, properties[index + 1].start]);
|
|
1003
|
-
else if (index > 0) removals.push([properties[index - 1].end, property.end]);
|
|
1004
|
-
else {
|
|
1005
|
-
const trailingComma = /^\s*,/.exec(code.slice(property.end));
|
|
1006
|
-
removals.push([property.start, property.end + (trailingComma?.[0].length ?? 0)]);
|
|
1007
|
-
}
|
|
1000
|
+
return !!name && PLATFORM_CONFIG_KEYS.has(name);
|
|
1008
1001
|
});
|
|
1002
|
+
for (let first = 0; first < properties.length; first++) {
|
|
1003
|
+
if (!removed[first]) continue;
|
|
1004
|
+
let last = first;
|
|
1005
|
+
while (last + 1 < properties.length && removed[last + 1]) last++;
|
|
1006
|
+
if (last < properties.length - 1) {
|
|
1007
|
+
removals.push([properties[first].start, properties[last + 1].start]);
|
|
1008
|
+
} else if (first > 0) {
|
|
1009
|
+
removals.push([properties[first - 1].end, properties[last].end]);
|
|
1010
|
+
} else {
|
|
1011
|
+
const trailingComma = /^\s*,/.exec(code.slice(properties[last].end));
|
|
1012
|
+
removals.push([
|
|
1013
|
+
properties[first].start,
|
|
1014
|
+
properties[last].end + (trailingComma?.[0].length ?? 0)
|
|
1015
|
+
]);
|
|
1016
|
+
}
|
|
1017
|
+
first = last;
|
|
1018
|
+
}
|
|
1009
1019
|
}
|
|
1010
1020
|
if (removals.length === 0) return null;
|
|
1011
1021
|
removals.sort((left, right) => right[0] - left[0]);
|
|
@@ -2044,7 +2054,7 @@ function getCachedClientModuleHydrationPlan(modulePath, root, mode, cache, optio
|
|
|
2044
2054
|
async function buildClient(productionVite, config, root, srcDir, outputDir, pageRoutes, layoutRoutes = [], routeSlots = [], isolatedClientBoundaryModules = /* @__PURE__ */ new Set(), hydrationPlanCache = /* @__PURE__ */ new Map(), rendererBuildLifetime, programmaticClientRoutes) {
|
|
2045
2055
|
const viteBuild = productionVite.build;
|
|
2046
2056
|
const { farmPlugin, farmServerOnlyEntriesPlugin } = await import("./vite.mjs");
|
|
2047
|
-
const { PluginManager: PluginManager2 } = await import("./plugin-
|
|
2057
|
+
const { PluginManager: PluginManager2 } = await import("./plugin-53SY5YBS.mjs");
|
|
2048
2058
|
const fs4 = await import("fs/promises");
|
|
2049
2059
|
const pluginManager = new PluginManager2({
|
|
2050
2060
|
config,
|
|
@@ -2510,7 +2520,7 @@ function toBakedMarkdownSourcePath(root, filePath) {
|
|
|
2510
2520
|
}
|
|
2511
2521
|
return relative.split(path10.sep).join("/");
|
|
2512
2522
|
}
|
|
2513
|
-
function generateUniversalRouterStateRuntime() {
|
|
2523
|
+
function generateUniversalRouterStateRuntime(streamNavigations = false) {
|
|
2514
2524
|
return `
|
|
2515
2525
|
const FARM_PAGE_STATE_KEY = "__farmPageState";
|
|
2516
2526
|
const FARM_HISTORY_INDEX_KEY = "__farmHistoryIndex";
|
|
@@ -2578,6 +2588,46 @@ async function fetchFarmNavigationDocument(url, headers, recover = true, signal)
|
|
|
2578
2588
|
return response;
|
|
2579
2589
|
}
|
|
2580
2590
|
|
|
2591
|
+
${streamNavigations ? `const FARM_FLUSH_MARKER = "<!--farm-flush-->";
|
|
2592
|
+
|
|
2593
|
+
// Reads a streamed navigation (F-Stream) up to the end of React's shell. \`next\` then resolves
|
|
2594
|
+
// with each later flush as it ends, and null at the end; a document without a marker is all shell.
|
|
2595
|
+
async function readFarmNavigationStream(body) {
|
|
2596
|
+
const reader = body.getReader();
|
|
2597
|
+
const decoder = new TextDecoder();
|
|
2598
|
+
let text = "";
|
|
2599
|
+
let done = false;
|
|
2600
|
+
const next = async function() {
|
|
2601
|
+
for (;;) {
|
|
2602
|
+
const at = text.indexOf(FARM_FLUSH_MARKER);
|
|
2603
|
+
if (at !== -1) {
|
|
2604
|
+
const flush = text.slice(0, at);
|
|
2605
|
+
text = text.slice(at + FARM_FLUSH_MARKER.length);
|
|
2606
|
+
return flush;
|
|
2607
|
+
}
|
|
2608
|
+
if (done) {
|
|
2609
|
+
const flush = text;
|
|
2610
|
+
text = "";
|
|
2611
|
+
return flush ? flush : null;
|
|
2612
|
+
}
|
|
2613
|
+
const result = await reader.read();
|
|
2614
|
+
if (result.done) {
|
|
2615
|
+
done = true;
|
|
2616
|
+
text += decoder.decode();
|
|
2617
|
+
} else {
|
|
2618
|
+
text += decoder.decode(result.value, { stream: true });
|
|
2619
|
+
}
|
|
2620
|
+
}
|
|
2621
|
+
};
|
|
2622
|
+
const shell = await next();
|
|
2623
|
+
if (done && !text) return { shell: shell || "" };
|
|
2624
|
+
return {
|
|
2625
|
+
shell: shell,
|
|
2626
|
+
next: next,
|
|
2627
|
+
cancel: function() { reader.cancel().catch(function() {}); },
|
|
2628
|
+
};
|
|
2629
|
+
}` : ""}
|
|
2630
|
+
|
|
2581
2631
|
function clearFarmPrefetchCacheOnDeploymentMismatch(router, error) {
|
|
2582
2632
|
if (error?.name === "FarmDeploymentMismatchError") {
|
|
2583
2633
|
router.clearCache();
|
|
@@ -2781,9 +2831,35 @@ function interpolateRedirectDestination(destination, params) {
|
|
|
2781
2831
|
}
|
|
2782
2832
|
`.trim();
|
|
2783
2833
|
}
|
|
2784
|
-
function generateUniversalRouterStateProperties() {
|
|
2834
|
+
function generateUniversalRouterStateProperties(streamNavigations = false) {
|
|
2785
2835
|
return `
|
|
2786
|
-
|
|
2836
|
+
${streamNavigations ? ` // A streamed navigation swaps in the page's shell; its Suspense content follows flush by flush.
|
|
2837
|
+
navigationStream: null,
|
|
2838
|
+
streamingNavigation: null,
|
|
2839
|
+
takeNavigationStream: function(html) {
|
|
2840
|
+
const stream = this.navigationStream;
|
|
2841
|
+
this.navigationStream = null;
|
|
2842
|
+
if (!stream) return;
|
|
2843
|
+
if (stream.html !== html) {
|
|
2844
|
+
stream.cancel();
|
|
2845
|
+
return;
|
|
2846
|
+
}
|
|
2847
|
+
this.streamingNavigation = stream;
|
|
2848
|
+
void streamFarmNavigation(
|
|
2849
|
+
stream,
|
|
2850
|
+
document.getElementById("root") || document.body,
|
|
2851
|
+
() => this.streamingNavigation === stream,
|
|
2852
|
+
);
|
|
2853
|
+
},
|
|
2854
|
+
stopNavigationStream: function() {
|
|
2855
|
+
this.navigationStream?.cancel();
|
|
2856
|
+
this.streamingNavigation?.cancel();
|
|
2857
|
+
this.navigationStream = null;
|
|
2858
|
+
this.streamingNavigation = null;
|
|
2859
|
+
},
|
|
2860
|
+
` : ` takeNavigationStream: function() {},
|
|
2861
|
+
stopNavigationStream: function() {},
|
|
2862
|
+
`} blockers: new Set(),
|
|
2787
2863
|
unloadBlockers: new Map(),
|
|
2788
2864
|
navigationListeners: new Set(),
|
|
2789
2865
|
navigationState: IDLE_NAVIGATION_STATE,
|
|
@@ -3077,6 +3153,11 @@ function generateUniversalRouterStateProperties() {
|
|
|
3077
3153
|
// Only speculative requests have shared ownership. Ordinary navigations
|
|
3078
3154
|
// keep their own abort signal and cannot cancel another caller's work.
|
|
3079
3155
|
const record = recover ? null : { valid: true, deploymentId, promise: null };
|
|
3156
|
+
// A navigation (not a prefetch) streams when the router supports it: the page goes in as
|
|
3157
|
+
// soon as its shell arrives, and its Suspense content follows (takeNavigationStream). A page
|
|
3158
|
+
// whose layouts hydrate, or one rendered in this page's React root, arrives whole.
|
|
3159
|
+
const streamShell = ${streamNavigations ? `recover && !interceptFrom && !partialHeaders["F-Render"] &&
|
|
3160
|
+
!hasHydratableLayout(new URL(url, window.location.href).pathname)` : "false"};
|
|
3080
3161
|
const request = async () => {
|
|
3081
3162
|
const response = await fetchFarmNavigationDocument(url, {
|
|
3082
3163
|
"Accept": "text/html",
|
|
@@ -3085,13 +3166,28 @@ function generateUniversalRouterStateProperties() {
|
|
|
3085
3166
|
// layouts it shows.
|
|
3086
3167
|
...getFarmIslandValueHeaders(),
|
|
3087
3168
|
...partialHeaders,
|
|
3169
|
+
...(streamShell ? { "F-Stream": "flush" } : {}),
|
|
3088
3170
|
}, recover, signal);
|
|
3089
3171
|
if (!response.ok) throw new Error("Failed to fetch page");
|
|
3090
|
-
const
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3172
|
+
const store = (html) => {
|
|
3173
|
+
if (cacheResult && !signal?.aborted && generation === this.prefetchGeneration &&
|
|
3174
|
+
deploymentId === window.__FARM_DEPLOYMENT_ID__ && (!record || record.valid)) {
|
|
3175
|
+
this.storePrefetchedHtml(cacheKey, html);
|
|
3176
|
+
}
|
|
3177
|
+
};
|
|
3178
|
+
${streamNavigations ? ` if (streamShell && response.body) {
|
|
3179
|
+
const streamed = await readFarmNavigationStream(response.body);
|
|
3180
|
+
if (!streamed.next) {
|
|
3181
|
+
store(streamed.shell);
|
|
3182
|
+
return streamed.shell;
|
|
3183
|
+
}
|
|
3184
|
+
this.stopNavigationStream();
|
|
3185
|
+
this.navigationStream = { html: streamed.shell, next: streamed.next, cancel: streamed.cancel, store };
|
|
3186
|
+
return streamed.shell;
|
|
3094
3187
|
}
|
|
3188
|
+
` : ""}
|
|
3189
|
+
const html = await response.text();
|
|
3190
|
+
store(html);
|
|
3095
3191
|
return html;
|
|
3096
3192
|
};
|
|
3097
3193
|
if (!record) return request();
|
|
@@ -3372,7 +3468,7 @@ function isFarmDocsPath() {
|
|
|
3372
3468
|
// Farm.js Client Runtime (no client components)
|
|
3373
3469
|
${cssImport}
|
|
3374
3470
|
${layoutImports}
|
|
3375
|
-
import { createClientCancellation, createClientPluginManager, getFarmIslandValueHeaders, getHashTargetElement, installChunkErrorRecovery, isFarmBlockedNavigationURL, isFarmExternalNavigationURL, reconcileFarmDocumentHead, setFarmBasePath, setFarmTrailingSlashPreference, stripFarmBasePath } from "@farm.js/core/internal/client-runtime";
|
|
3471
|
+
import { createClientCancellation, createClientPluginManager, getFarmIslandValueHeaders, getHashTargetElement, installChunkErrorRecovery, isFarmBlockedNavigationURL, isFarmExternalNavigationURL, reconcileFarmDocumentHead, runFarmNavigationDelegates, setFarmBasePath, setFarmTrailingSlashPreference, stripFarmBasePath } from "@farm.js/core/internal/client-runtime";
|
|
3376
3472
|
import { createFarmDeploymentMismatchError, createFarmDeploymentRequestHeaders, isFarmDeploymentMismatchResponse } from "@farm.js/core/deployment";
|
|
3377
3473
|
${clientPluginEntry.imports}
|
|
3378
3474
|
${clientCachePersistence.imports}
|
|
@@ -3437,6 +3533,15 @@ ${generateUniversalRouterStateProperties()}
|
|
|
3437
3533
|
if (action === "pop") this.revertBlockedPopState(from);
|
|
3438
3534
|
return;
|
|
3439
3535
|
}
|
|
3536
|
+
// A refresh re-renders the page on screen; only a move to another page is offered.
|
|
3537
|
+
if (
|
|
3538
|
+
action !== "pop" &&
|
|
3539
|
+
!(options.refresh && to === from) &&
|
|
3540
|
+
(await runFarmNavigationDelegates({ url: url.href, from, to, action }))
|
|
3541
|
+
) {
|
|
3542
|
+
this.cancelActiveNavigation();
|
|
3543
|
+
return;
|
|
3544
|
+
}
|
|
3440
3545
|
if (action === "pop") {
|
|
3441
3546
|
this.currentHistoryIndex = readHistoryIndex(options.popState);
|
|
3442
3547
|
this.currentHistoryState = options.popState;
|
|
@@ -3737,7 +3842,7 @@ ${layoutImports}
|
|
|
3737
3842
|
${rendererClientImports}
|
|
3738
3843
|
${isolatedHydrationImport}
|
|
3739
3844
|
${providerClientCode.imports}
|
|
3740
|
-
import { createClientCancellation, createClientPluginManager, getFarmIslandValueHeaders, getHashTargetElement, installChunkErrorRecovery, isFarmBlockedNavigationURL, isFarmExternalNavigationURL, reconcileFarmDocumentHead, scheduleFarmIslandHydration, searchParamsToObject, setFarmBasePath, setFarmTrailingSlashPreference, stripFarmBasePath } from "@farm.js/core/internal/client-runtime";
|
|
3845
|
+
import { createClientCancellation, createClientPluginManager, getFarmIslandValueHeaders, getHashTargetElement, installChunkErrorRecovery, isFarmBlockedNavigationURL, isFarmExternalNavigationURL, reconcileFarmDocumentHead, runFarmNavigationDelegates, scheduleFarmIslandHydration, searchParamsToObject, setFarmBasePath, setFarmTrailingSlashPreference, stripFarmBasePath } from "@farm.js/core/internal/client-runtime";
|
|
3741
3846
|
import { createFarmDeploymentMismatchError, createFarmDeploymentRequestHeaders, isFarmDeploymentMismatchResponse } from "@farm.js/core/deployment";
|
|
3742
3847
|
import { createFarmRouter, isFarmRouteActive, matchFarmRoute } from "@farm.js/core/router";
|
|
3743
3848
|
${clientPluginEntry.imports}
|
|
@@ -4169,7 +4274,7 @@ let currentPathname = null;
|
|
|
4169
4274
|
let isHydrated = false;
|
|
4170
4275
|
let pendingPageHydrationController = null;
|
|
4171
4276
|
|
|
4172
|
-
${generateUniversalRouterStateRuntime()}
|
|
4277
|
+
${generateUniversalRouterStateRuntime(islandValues)}
|
|
4173
4278
|
|
|
4174
4279
|
function cancelPendingPageHydration() {
|
|
4175
4280
|
pendingPageHydrationController?.abort();
|
|
@@ -4357,6 +4462,55 @@ function activateNavigationScripts(root) {
|
|
|
4357
4462
|
}
|
|
4358
4463
|
}
|
|
4359
4464
|
|
|
4465
|
+
${islandValues ? `// Adds the flushes after a streamed navigation's shell: React's staged Suspense content and the
|
|
4466
|
+
// scripts that reveal it. In islands mode, the islands React reveals hydrate as they appear, and
|
|
4467
|
+
// the ones it removes (a replaced fallback) are released.
|
|
4468
|
+
async function streamFarmNavigation(stream, root, isCurrent) {
|
|
4469
|
+
let html = stream.html;
|
|
4470
|
+
let streaming = true;
|
|
4471
|
+
${isolatedHydrationEnabled ? `const removed = new Set();
|
|
4472
|
+
let queued = false;
|
|
4473
|
+
const run = function() {
|
|
4474
|
+
queued = false;
|
|
4475
|
+
if (!isCurrent()) return observer.disconnect();
|
|
4476
|
+
for (const node of removed) if (!node.isConnected) disposeFarmIsolatedClientBoundaries(node);
|
|
4477
|
+
removed.clear();
|
|
4478
|
+
if (!streaming && !root.querySelector('div[hidden][id^="S:"]')) observer.disconnect();
|
|
4479
|
+
hydrateFarmIsolatedClientBoundaries(root).catch(function(error) {
|
|
4480
|
+
console.error("[Farm.js] Hydrating streamed islands failed:", error);
|
|
4481
|
+
});
|
|
4482
|
+
};
|
|
4483
|
+
const observer = new MutationObserver(function(records) {
|
|
4484
|
+
for (const record of records) for (const node of record.removedNodes) removed.add(node);
|
|
4485
|
+
if (queued) return;
|
|
4486
|
+
queued = true;
|
|
4487
|
+
queueMicrotask(run);
|
|
4488
|
+
});
|
|
4489
|
+
observer.observe(root, { childList: true, subtree: true });` : "const observer = { disconnect: function() {} };"}
|
|
4490
|
+
try {
|
|
4491
|
+
for (let flush = await stream.next(); flush !== null; flush = await stream.next()) {
|
|
4492
|
+
if (!isCurrent()) return stream.cancel();
|
|
4493
|
+
html += flush;
|
|
4494
|
+
const parsed = new DOMParser().parseFromString('<div id="root">' + flush, "text/html");
|
|
4495
|
+
const fragment = document.createDocumentFragment();
|
|
4496
|
+
for (const node of Array.from(parsed.getElementById("root").childNodes)) fragment.appendChild(node);
|
|
4497
|
+
activateNavigationScripts(fragment);
|
|
4498
|
+
root.appendChild(fragment);
|
|
4499
|
+
}
|
|
4500
|
+
} catch (error) {
|
|
4501
|
+
streaming = false;
|
|
4502
|
+
if (!isCurrent()) return observer.disconnect();
|
|
4503
|
+
console.error("[Farm.js] A streamed navigation failed:", error);
|
|
4504
|
+
${isolatedHydrationEnabled ? "farmIsolatedHydrationRuntime.endStream?.(root);\n if (!queued) run();" : ""}
|
|
4505
|
+
return;
|
|
4506
|
+
}
|
|
4507
|
+
// A cancelled stream ends early: keep its partial document out of the cache.
|
|
4508
|
+
if (!isCurrent()) return observer.disconnect();
|
|
4509
|
+
streaming = false;
|
|
4510
|
+
stream.store(html);
|
|
4511
|
+
${isolatedHydrationEnabled ? "farmIsolatedHydrationRuntime.endStream?.(root);\n if (!queued) run();" : ""}
|
|
4512
|
+
}` : ""}
|
|
4513
|
+
|
|
4360
4514
|
function replaceSharedLayoutBoundary(currentRoot, nextRoot, refresh = false) {
|
|
4361
4515
|
const currentPatterns = getLayoutPatterns(currentRoot);
|
|
4362
4516
|
const nextPatterns = getLayoutPatterns(nextRoot);
|
|
@@ -4399,7 +4553,7 @@ function replaceSharedLayoutBoundary(currentRoot, nextRoot, refresh = false) {
|
|
|
4399
4553
|
|
|
4400
4554
|
// SPA Router
|
|
4401
4555
|
const spaRouter = {
|
|
4402
|
-
${generateUniversalRouterStateProperties()}
|
|
4556
|
+
${generateUniversalRouterStateProperties(islandValues)}
|
|
4403
4557
|
prefetchCache: new Map(),
|
|
4404
4558
|
${islandValues ? ` // Islands mode: navigations name the layouts on screen, and say when this page renders the
|
|
4405
4559
|
// next one in its own React root; the server leaves out what the browser keeps or rebuilds.
|
|
@@ -4411,7 +4565,7 @@ ${islandValues ? ` // Islands mode: navigations name the layouts on screen, and
|
|
|
4411
4565
|
...(reactRoot && reactRootContainer === root ? { "F-Render": "tree" } : {}),
|
|
4412
4566
|
};
|
|
4413
4567
|
},
|
|
4414
|
-
` : ""}
|
|
4568
|
+
` : ""}
|
|
4415
4569
|
navigate: async function(href, options = {}) {
|
|
4416
4570
|
const url = new URL(href, window.location.href);
|
|
4417
4571
|
if (isFarmBlockedNavigationURL(url)) return;
|
|
@@ -4457,6 +4611,15 @@ ${islandValues ? ` // Islands mode: navigations name the layouts on screen, and
|
|
|
4457
4611
|
if (action === "pop") this.revertBlockedPopState(from);
|
|
4458
4612
|
return;
|
|
4459
4613
|
}
|
|
4614
|
+
// A refresh re-renders the page on screen; only a move to another page is offered.
|
|
4615
|
+
if (
|
|
4616
|
+
action !== "pop" &&
|
|
4617
|
+
!(options.refresh && to === from) &&
|
|
4618
|
+
(await runFarmNavigationDelegates({ url: url.href, from, to, action }))
|
|
4619
|
+
) {
|
|
4620
|
+
this.cancelActiveNavigation();
|
|
4621
|
+
return;
|
|
4622
|
+
}
|
|
4460
4623
|
if (action === "pop") {
|
|
4461
4624
|
this.currentHistoryIndex = readHistoryIndex(options.popState);
|
|
4462
4625
|
this.currentHistoryState = options.popState;
|
|
@@ -4464,6 +4627,7 @@ ${islandValues ? ` // Islands mode: navigations name the layouts on screen, and
|
|
|
4464
4627
|
|
|
4465
4628
|
// A route transition invalidates any trigger waiting on the previous DOM boundary.
|
|
4466
4629
|
cancelPendingPageHydration();
|
|
4630
|
+
this.stopNavigationStream();
|
|
4467
4631
|
this.saveScrollPosition(window.location.pathname + window.location.search);
|
|
4468
4632
|
const navigation = this.startNavigation(from, url, action);
|
|
4469
4633
|
// A refresh keeps the islands still on the page (islands mode).
|
|
@@ -4588,6 +4752,7 @@ ${islandValues ? ` // Islands mode: navigations name the layouts on screen, and
|
|
|
4588
4752
|
if (!this.isCurrentNavigation(navigation, clientNavigation)) return;
|
|
4589
4753
|
await this.runViewTransition(options.viewTransition, async () => {
|
|
4590
4754
|
if (!this.isCurrentNavigation(navigation, clientNavigation)) return;
|
|
4755
|
+
let swappedHtml = html;
|
|
4591
4756
|
let swapped = await this.swapContent(
|
|
4592
4757
|
html,
|
|
4593
4758
|
url.pathname + url.search,
|
|
@@ -4607,6 +4772,7 @@ ${islandValues ? ` // Islands mode: navigations name the layouts on screen, and
|
|
|
4607
4772
|
false,
|
|
4608
4773
|
);
|
|
4609
4774
|
if (!this.isCurrentNavigation(navigation, clientNavigation)) return;
|
|
4775
|
+
swappedHtml = documentHtml;
|
|
4610
4776
|
swapped = await this.swapContent(
|
|
4611
4777
|
documentHtml,
|
|
4612
4778
|
url.pathname + url.search,
|
|
@@ -4618,6 +4784,7 @@ ${islandValues ? ` // Islands mode: navigations name the layouts on screen, and
|
|
|
4618
4784
|
if (!swapped || swapped === "segment-mismatch") {
|
|
4619
4785
|
throw new Error("Farm could not swap the target document");
|
|
4620
4786
|
}
|
|
4787
|
+
this.takeNavigationStream(swappedHtml);
|
|
4621
4788
|
this.writeHistoryEntry(action, url.pathname + url.search, options.state, url);
|
|
4622
4789
|
currentPathname = pathname;
|
|
4623
4790
|
this.currentPath = to;
|
|
@@ -4907,7 +5074,7 @@ void hydrate();
|
|
|
4907
5074
|
async function buildSSRInMemory(productionVite, config, root, routeManager, apiRouteManager, serverRenderer, preset, collectedPageRoutes, collectedLayoutRoutes, collectedRouteSlots, isolatedClientBoundaryModules, hydrationPlanCache, rendererBuildLifetime) {
|
|
4908
5075
|
const viteBuild = productionVite.build;
|
|
4909
5076
|
const { farmPlugin, farmServerOnlyEntriesPlugin } = await import("./vite.mjs");
|
|
4910
|
-
const { PluginManager: PluginManager2 } = await import("./plugin-
|
|
5077
|
+
const { PluginManager: PluginManager2 } = await import("./plugin-53SY5YBS.mjs");
|
|
4911
5078
|
const fs4 = await import("fs/promises");
|
|
4912
5079
|
const pluginManager = new PluginManager2({
|
|
4913
5080
|
config,
|
|
@@ -6796,11 +6963,16 @@ function escapeFarmHtmlAttribute(value) {
|
|
|
6796
6963
|
.replace(/>/g, ">");
|
|
6797
6964
|
}
|
|
6798
6965
|
|
|
6799
|
-
async function renderFarmElement(ReactDOMServer, element, routeKey) {
|
|
6966
|
+
async function renderFarmElement(ReactDOMServer, element, routeKey, flushMarkers = false) {
|
|
6967
|
+
// Written after each React flush in a streamed navigation (flushMarkers): the browser swaps in
|
|
6968
|
+
// the shell, then adds each Suspense boundary as soon as the flush that completed it ends.
|
|
6969
|
+
const FARM_FLUSH_MARKER = "<!--farm-flush-->";
|
|
6800
6970
|
// Islands mode: each render writes its islands' values itself, so a request that renders twice
|
|
6801
6971
|
// (notFound(), or a synchronous attempt that suspends and streams) still sends them.
|
|
6802
6972
|
if (typeof farmIslandsRender === "function") element = farmIslandsRender(element);
|
|
6803
6973
|
const streamErrors = [];
|
|
6974
|
+
// A browser that leaves the page cancels the stream: React's abort errors are not failures.
|
|
6975
|
+
let cancelled = false;
|
|
6804
6976
|
const syncHtml = renderFarmElementSync(ReactDOMServer, element, routeKey);
|
|
6805
6977
|
if (syncHtml !== undefined) return { html: syncHtml, shellHtml: syncHtml, streamErrors };
|
|
6806
6978
|
let encoder;
|
|
@@ -6838,7 +7010,7 @@ async function renderFarmElement(ReactDOMServer, element, routeKey) {
|
|
|
6838
7010
|
// request handler must still receive them to map the response status,
|
|
6839
7011
|
// but they should not produce a misleading SSR failure log.
|
|
6840
7012
|
streamErrors.push(error);
|
|
6841
|
-
if (isFarmRedirectError(error) || isFarmNotFoundError(error)) return;
|
|
7013
|
+
if (cancelled || isFarmRedirectError(error) || isFarmNotFoundError(error)) return;
|
|
6842
7014
|
console.error("[Farm SSR stream]", error);
|
|
6843
7015
|
},
|
|
6844
7016
|
});
|
|
@@ -6885,13 +7057,33 @@ async function renderFarmElement(ReactDOMServer, element, routeKey) {
|
|
|
6885
7057
|
}
|
|
6886
7058
|
|
|
6887
7059
|
let replayFirstChunk = true;
|
|
7060
|
+
let pendingRead = null;
|
|
7061
|
+
// A flush is the chunks React has queued when a task boundary passes.
|
|
7062
|
+
const drainFlush = async function(controller, waitForFirst) {
|
|
7063
|
+
for (let first = waitForFirst; ; first = false) {
|
|
7064
|
+
const read = pendingRead || (pendingRead = reader.read());
|
|
7065
|
+
const result = first
|
|
7066
|
+
? await read
|
|
7067
|
+
: await Promise.race([read, new Promise(function(resolve) { setTimeout(resolve, 0); })]);
|
|
7068
|
+
if (!result) break;
|
|
7069
|
+
pendingRead = null;
|
|
7070
|
+
if (result.done) {
|
|
7071
|
+
controller.close();
|
|
7072
|
+
return;
|
|
7073
|
+
}
|
|
7074
|
+
controller.enqueue(normalizeChunk(result.value));
|
|
7075
|
+
}
|
|
7076
|
+
controller.enqueue(normalizeChunk(FARM_FLUSH_MARKER));
|
|
7077
|
+
};
|
|
6888
7078
|
const replayStream = new ReadableStream({
|
|
6889
7079
|
pull(controller) {
|
|
6890
7080
|
if (replayFirstChunk) {
|
|
6891
7081
|
replayFirstChunk = false;
|
|
6892
7082
|
controller.enqueue(firstChunk);
|
|
7083
|
+
if (flushMarkers) return drainFlush(controller, false);
|
|
6893
7084
|
return;
|
|
6894
7085
|
}
|
|
7086
|
+
if (flushMarkers) return drainFlush(controller, true);
|
|
6895
7087
|
return reader.read().then(
|
|
6896
7088
|
function(result) {
|
|
6897
7089
|
if (result.done) controller.close();
|
|
@@ -6903,6 +7095,7 @@ async function renderFarmElement(ReactDOMServer, element, routeKey) {
|
|
|
6903
7095
|
);
|
|
6904
7096
|
},
|
|
6905
7097
|
cancel(reason) {
|
|
7098
|
+
cancelled = true;
|
|
6906
7099
|
return reader.cancel(reason);
|
|
6907
7100
|
},
|
|
6908
7101
|
});
|
|
@@ -6927,6 +7120,7 @@ async function renderFarmElement(ReactDOMServer, element, routeKey) {
|
|
|
6927
7120
|
let settleComplete;
|
|
6928
7121
|
let rejectComplete;
|
|
6929
7122
|
const chunks = [];
|
|
7123
|
+
let unflushed = false;
|
|
6930
7124
|
const decision = new Promise(function(resolve, reject) {
|
|
6931
7125
|
settleDecision = resolve;
|
|
6932
7126
|
rejectDecision = reject;
|
|
@@ -6949,8 +7143,15 @@ async function renderFarmElement(ReactDOMServer, element, routeKey) {
|
|
|
6949
7143
|
const normalized = normalizeChunk(chunk);
|
|
6950
7144
|
if (streamStarted) streamController.enqueue(normalized);
|
|
6951
7145
|
else chunks.push(normalized);
|
|
7146
|
+
unflushed = true;
|
|
6952
7147
|
return true;
|
|
6953
7148
|
},
|
|
7149
|
+
// React calls this after each flush.
|
|
7150
|
+
flush() {
|
|
7151
|
+
if (!flushMarkers || !streamStarted || streamClosed || !unflushed) return;
|
|
7152
|
+
unflushed = false;
|
|
7153
|
+
streamController.enqueue(normalizeChunk(FARM_FLUSH_MARKER));
|
|
7154
|
+
},
|
|
6954
7155
|
end() {
|
|
6955
7156
|
if (streamClosed) return;
|
|
6956
7157
|
streamClosed = true;
|
|
@@ -6979,6 +7180,9 @@ async function renderFarmElement(ReactDOMServer, element, routeKey) {
|
|
|
6979
7180
|
streamController = controller;
|
|
6980
7181
|
},
|
|
6981
7182
|
cancel(reason) {
|
|
7183
|
+
// React writes its abort instructions: the stream no longer takes them.
|
|
7184
|
+
cancelled = true;
|
|
7185
|
+
streamClosed = true;
|
|
6982
7186
|
if (pipeableStream && typeof pipeableStream.abort === "function") {
|
|
6983
7187
|
pipeableStream.abort(reason);
|
|
6984
7188
|
}
|
|
@@ -6998,7 +7202,7 @@ async function renderFarmElement(ReactDOMServer, element, routeKey) {
|
|
|
6998
7202
|
onError(error) {
|
|
6999
7203
|
// Same control-flow guard as the readable-stream path above.
|
|
7000
7204
|
streamErrors.push(error);
|
|
7001
|
-
if (isFarmRedirectError(error) || isFarmNotFoundError(error)) return;
|
|
7205
|
+
if (cancelled || isFarmRedirectError(error) || isFarmNotFoundError(error)) return;
|
|
7002
7206
|
console.error("[Farm SSR stream]", error);
|
|
7003
7207
|
},
|
|
7004
7208
|
});
|
|
@@ -7019,6 +7223,11 @@ async function renderFarmElement(ReactDOMServer, element, routeKey) {
|
|
|
7019
7223
|
|
|
7020
7224
|
streamStarted = true;
|
|
7021
7225
|
for (const chunk of chunks) streamController.enqueue(chunk);
|
|
7226
|
+
// What React wrote while its shell was ready is the shell; Suspense content follows.
|
|
7227
|
+
if (flushMarkers && unflushed) {
|
|
7228
|
+
unflushed = false;
|
|
7229
|
+
streamController.enqueue(normalizeChunk(FARM_FLUSH_MARKER));
|
|
7230
|
+
}
|
|
7022
7231
|
if (streamClosed) streamController.close();
|
|
7023
7232
|
return {
|
|
7024
7233
|
stream,
|
|
@@ -9293,8 +9502,12 @@ ${hasServerRuntimeIntegrations ? `
|
|
|
9293
9502
|
shouldHydrateLayout &&
|
|
9294
9503
|
route.serverTree === true &&
|
|
9295
9504
|
!route.shouldHydrate &&
|
|
9296
|
-
request.headers.get("f-render") === "tree"
|
|
9297
|
-
|
|
9505
|
+
request.headers.get("f-render") === "tree";
|
|
9506
|
+
// A navigation the browser streams marks where each React flush ends, so the browser
|
|
9507
|
+
// shows the page before its Suspense content arrives (FARM_FLUSH_MARKER).
|
|
9508
|
+
const farmFlushMarkers = request.headers.get("f-stream") === "flush";` : `const farmLayoutKeyOf = null;
|
|
9509
|
+
const farmPayloadOnlyNavigation = false;
|
|
9510
|
+
const farmFlushMarkers = false;`}
|
|
9298
9511
|
const renderPageElement = async () => {
|
|
9299
9512
|
// First, render the page content
|
|
9300
9513
|
let pageElement;
|
|
@@ -9416,7 +9629,7 @@ ${hasServerRuntimeIntegrations ? `
|
|
|
9416
9629
|
}
|
|
9417
9630
|
|
|
9418
9631
|
wrappedElement = wrapWithFarmIntegrationProviders(wrappedElement);
|
|
9419
|
-
return renderFarmElement(ReactDOMServer, wrappedElement, route.pattern);
|
|
9632
|
+
return renderFarmElement(ReactDOMServer, wrappedElement, route.pattern, farmFlushMarkers);
|
|
9420
9633
|
};
|
|
9421
9634
|
const renderedPage = ${hasMiddlewareRuntime ? `await _runWithMiddlewareData(middlewareData, () =>
|
|
9422
9635
|
_runWithMiddlewareContext(middlewareContext, renderPageElement)
|
|
@@ -9539,7 +9752,7 @@ ${hasServerRuntimeIntegrations ? `
|
|
|
9539
9752
|
// gets HTML without them.
|
|
9540
9753
|
responseHeaders["Vary"] = farmSharedCacheableRoute
|
|
9541
9754
|
? "F-Layouts"
|
|
9542
|
-
: "F-Values, F-Layouts, F-Render";` : ""}
|
|
9755
|
+
: "F-Values, F-Layouts, F-Render, F-Stream";` : ""}
|
|
9543
9756
|
let html = renderedPage.html;
|
|
9544
9757
|
|
|
9545
9758
|
// Check if the layout already rendered a full HTML document
|
|
@@ -11782,7 +11995,7 @@ async function createProjectModuleServer(createViteServer, config, root, buildLi
|
|
|
11782
11995
|
}
|
|
11783
11996
|
async function buildClient2(viteBuild, config, root, srcDir, outputDir) {
|
|
11784
11997
|
const { farmI18nClientBridgePlugin, farmPlugin, farmServerOnlyEntriesPlugin } = await import("./vite.mjs");
|
|
11785
|
-
const { PluginManager: PluginManager2 } = await import("./plugin-
|
|
11998
|
+
const { PluginManager: PluginManager2 } = await import("./plugin-53SY5YBS.mjs");
|
|
11786
11999
|
const pluginManager = new PluginManager2({
|
|
11787
12000
|
config,
|
|
11788
12001
|
isDev: false,
|
|
@@ -11809,7 +12022,7 @@ async function buildClient2(viteBuild, config, root, srcDir, outputDir) {
|
|
|
11809
12022
|
}
|
|
11810
12023
|
async function buildSSR(viteBuild, config, root, srcDir, outputDir) {
|
|
11811
12024
|
const { farmI18nClientBridgePlugin, farmPlugin } = await import("./vite.mjs");
|
|
11812
|
-
const { PluginManager: PluginManager2 } = await import("./plugin-
|
|
12025
|
+
const { PluginManager: PluginManager2 } = await import("./plugin-53SY5YBS.mjs");
|
|
11813
12026
|
const pluginManager = new PluginManager2({
|
|
11814
12027
|
config,
|
|
11815
12028
|
isDev: false,
|
|
@@ -11850,7 +12063,7 @@ function resolveLegacyPageEntry(config, root, srcDir) {
|
|
|
11850
12063
|
}
|
|
11851
12064
|
async function buildNitro(config, routeManager, apiRouteManager, serverRenderer, preset, root, distDir, pluginManager) {
|
|
11852
12065
|
const [{ createNitroConfig }, { createNitro, build: nitroBuild }] = await Promise.all([
|
|
11853
|
-
import("./nitro-
|
|
12066
|
+
import("./nitro-2Q5NVY7L.mjs"),
|
|
11854
12067
|
import("nitro/builder")
|
|
11855
12068
|
]);
|
|
11856
12069
|
let nitroConfig = await createNitroConfig(
|