@farm.js/core 0.1.0-beta.6 → 0.1.0-beta.8
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 +227 -0
- package/dist/after.cjs.map +1 -0
- package/dist/after.d.mts +25 -0
- package/dist/after.d.ts +25 -0
- package/dist/after.mjs +14 -0
- package/dist/after.mjs.map +1 -0
- package/dist/agent-runtime.cjs +2379 -0
- package/dist/agent-runtime.cjs.map +1 -0
- package/dist/agent-runtime.d.mts +94 -0
- package/dist/agent-runtime.d.ts +94 -0
- package/dist/agent-runtime.mjs +479 -0
- package/dist/agent-runtime.mjs.map +1 -0
- package/dist/api/route-manager.d.mts +66 -0
- package/dist/api/route-manager.d.ts +66 -0
- package/dist/api/runtime.d.mts +3 -0
- package/dist/api/runtime.d.ts +3 -0
- package/dist/api.cjs +4100 -0
- package/dist/api.cjs.map +1 -0
- package/dist/api.d.mts +48 -0
- package/dist/api.d.ts +48 -0
- package/dist/api.mjs +93 -0
- package/dist/api.mjs.map +1 -0
- package/dist/app-BWtqQu3R.d.mts +302 -0
- package/dist/app-markdown.cjs +244 -0
- package/dist/app-markdown.cjs.map +1 -0
- package/dist/app-markdown.d.mts +22 -0
- package/dist/app-markdown.d.ts +22 -0
- package/dist/app-markdown.mjs +27 -0
- package/dist/app-markdown.mjs.map +1 -0
- package/dist/app-xltejvLY.d.ts +302 -0
- package/dist/cache.cjs +945 -0
- package/dist/cache.cjs.map +1 -0
- package/dist/cache.d.mts +192 -0
- package/dist/cache.d.ts +192 -0
- package/dist/cache.mjs +46 -0
- package/dist/cache.mjs.map +1 -0
- package/dist/chunk-2ED5Q2GH.mjs +422 -0
- package/dist/chunk-2ED5Q2GH.mjs.map +1 -0
- package/dist/chunk-32W4QEJP.mjs +158 -0
- package/dist/chunk-32W4QEJP.mjs.map +1 -0
- package/dist/chunk-3XNTL3FQ.mjs +452 -0
- package/dist/chunk-3XNTL3FQ.mjs.map +1 -0
- package/dist/chunk-44ZCFSKE.mjs +84 -0
- package/dist/chunk-44ZCFSKE.mjs.map +1 -0
- package/dist/chunk-4MGVSBRP.mjs +7787 -0
- package/dist/chunk-4MGVSBRP.mjs.map +1 -0
- package/dist/chunk-4S3ORGFA.mjs +44 -0
- package/dist/chunk-4S3ORGFA.mjs.map +1 -0
- package/dist/chunk-5BY76U2M.mjs +1 -0
- package/dist/chunk-5BY76U2M.mjs.map +1 -0
- package/dist/chunk-5ZGPRGWV.mjs +136 -0
- package/dist/chunk-5ZGPRGWV.mjs.map +1 -0
- package/dist/chunk-65A7QIKI.mjs +142 -0
- package/dist/chunk-65A7QIKI.mjs.map +1 -0
- package/dist/chunk-74YTBPTY.mjs +450 -0
- package/dist/chunk-74YTBPTY.mjs.map +1 -0
- package/dist/chunk-7FBJLMQH.mjs +338 -0
- package/dist/chunk-7FBJLMQH.mjs.map +1 -0
- package/dist/chunk-7HO6AEOP.mjs +74 -0
- package/dist/chunk-7HO6AEOP.mjs.map +1 -0
- package/dist/chunk-7MABZJIM.mjs +29 -0
- package/dist/chunk-7MABZJIM.mjs.map +1 -0
- package/dist/chunk-7N62DNSO.mjs +41 -0
- package/dist/chunk-7N62DNSO.mjs.map +1 -0
- package/dist/chunk-7ZY5AIJO.mjs +161 -0
- package/dist/chunk-7ZY5AIJO.mjs.map +1 -0
- package/dist/chunk-ALCLXXTY.mjs +187 -0
- package/dist/chunk-ALCLXXTY.mjs.map +1 -0
- package/dist/chunk-AZ7YUVNR.mjs +65 -0
- package/dist/chunk-AZ7YUVNR.mjs.map +1 -0
- package/dist/chunk-B232I2GP.mjs +163 -0
- package/dist/chunk-B232I2GP.mjs.map +1 -0
- package/dist/chunk-B4W3BNTL.mjs +483 -0
- package/dist/chunk-B4W3BNTL.mjs.map +1 -0
- package/dist/chunk-C2ROET2V.mjs +718 -0
- package/dist/chunk-C2ROET2V.mjs.map +1 -0
- package/dist/chunk-CGILA3WO.mjs +14 -0
- package/dist/chunk-CGILA3WO.mjs.map +1 -0
- package/dist/chunk-CGIXMLSY.mjs +184 -0
- package/dist/chunk-CGIXMLSY.mjs.map +1 -0
- package/dist/chunk-DJSGLHCN.mjs +597 -0
- package/dist/chunk-DJSGLHCN.mjs.map +1 -0
- package/dist/chunk-E2MPIBRE.mjs +149 -0
- package/dist/chunk-E2MPIBRE.mjs.map +1 -0
- package/dist/chunk-E6EPN5BT.mjs +203 -0
- package/dist/chunk-E6EPN5BT.mjs.map +1 -0
- package/dist/chunk-EI43C4RA.mjs +6277 -0
- package/dist/chunk-EI43C4RA.mjs.map +1 -0
- package/dist/chunk-EJ7T4TPB.mjs +622 -0
- package/dist/chunk-EJ7T4TPB.mjs.map +1 -0
- package/dist/chunk-FQYDHKKU.mjs +128 -0
- package/dist/chunk-FQYDHKKU.mjs.map +1 -0
- package/dist/chunk-FRPWCMMG.mjs +299 -0
- package/dist/chunk-FRPWCMMG.mjs.map +1 -0
- package/dist/chunk-GN72QAIH.mjs +146 -0
- package/dist/chunk-GN72QAIH.mjs.map +1 -0
- package/dist/chunk-GQVGIUSN.mjs +149 -0
- package/dist/chunk-GQVGIUSN.mjs.map +1 -0
- package/dist/chunk-GS6K5OCM.mjs +407 -0
- package/dist/chunk-GS6K5OCM.mjs.map +1 -0
- package/dist/chunk-GXASWWJU.mjs +364 -0
- package/dist/chunk-GXASWWJU.mjs.map +1 -0
- package/dist/chunk-GY2STC2S.mjs +180 -0
- package/dist/chunk-GY2STC2S.mjs.map +1 -0
- package/dist/chunk-H2FA2SBS.mjs +51 -0
- package/dist/chunk-H2FA2SBS.mjs.map +1 -0
- package/dist/chunk-I4CUBGVF.mjs +93 -0
- package/dist/chunk-I4CUBGVF.mjs.map +1 -0
- package/dist/chunk-ITN462YM.mjs +98 -0
- package/dist/chunk-ITN462YM.mjs.map +1 -0
- package/dist/chunk-J23HNLFY.mjs +72 -0
- package/dist/chunk-J23HNLFY.mjs.map +1 -0
- package/dist/chunk-J4FNJ5IU.mjs +179 -0
- package/dist/chunk-J4FNJ5IU.mjs.map +1 -0
- package/dist/chunk-J5YWQVI5.mjs +211 -0
- package/dist/chunk-J5YWQVI5.mjs.map +1 -0
- package/dist/chunk-JDEOUK5V.mjs +427 -0
- package/dist/chunk-JDEOUK5V.mjs.map +1 -0
- package/dist/chunk-JK25YEN6.mjs +219 -0
- package/dist/chunk-JK25YEN6.mjs.map +1 -0
- package/dist/chunk-K4667E2Q.mjs +1916 -0
- package/dist/chunk-K4667E2Q.mjs.map +1 -0
- package/dist/chunk-LGHEOHBU.mjs +218 -0
- package/dist/chunk-LGHEOHBU.mjs.map +1 -0
- package/dist/chunk-LM2YNO4U.mjs +24 -0
- package/dist/chunk-LM2YNO4U.mjs.map +1 -0
- package/dist/chunk-ME4MO2RJ.mjs +3540 -0
- package/dist/chunk-ME4MO2RJ.mjs.map +1 -0
- package/dist/chunk-MIUW47JX.mjs +639 -0
- package/dist/chunk-MIUW47JX.mjs.map +1 -0
- package/dist/chunk-NNLCAVB6.mjs +391 -0
- package/dist/chunk-NNLCAVB6.mjs.map +1 -0
- package/dist/chunk-P7QDS5AT.mjs +191 -0
- package/dist/chunk-P7QDS5AT.mjs.map +1 -0
- package/dist/chunk-PFE6GMNE.mjs +603 -0
- package/dist/chunk-PFE6GMNE.mjs.map +1 -0
- package/dist/chunk-QGOHVJ6J.mjs +63 -0
- package/dist/chunk-QGOHVJ6J.mjs.map +1 -0
- package/dist/chunk-QKVUNGAH.mjs +39 -0
- package/dist/chunk-QKVUNGAH.mjs.map +1 -0
- package/dist/chunk-QM746KUO.mjs +56 -0
- package/dist/chunk-QM746KUO.mjs.map +1 -0
- package/dist/chunk-QTZZ2ISQ.mjs +753 -0
- package/dist/chunk-QTZZ2ISQ.mjs.map +1 -0
- package/dist/chunk-RBRLLZL5.mjs +81 -0
- package/dist/chunk-RBRLLZL5.mjs.map +1 -0
- package/dist/chunk-RHIFZZUI.mjs +69 -0
- package/dist/chunk-RHIFZZUI.mjs.map +1 -0
- package/dist/chunk-RQ633A5I.mjs +187 -0
- package/dist/chunk-RQ633A5I.mjs.map +1 -0
- package/dist/chunk-SCFX4UTD.mjs +28 -0
- package/dist/chunk-SCFX4UTD.mjs.map +1 -0
- package/dist/chunk-SL6HTIOK.mjs +66 -0
- package/dist/chunk-SL6HTIOK.mjs.map +1 -0
- package/dist/chunk-SPBBQLXI.mjs +207 -0
- package/dist/chunk-SPBBQLXI.mjs.map +1 -0
- package/dist/chunk-SSA7THPX.mjs +10 -0
- package/dist/chunk-SSA7THPX.mjs.map +1 -0
- package/dist/chunk-T4QJQK76.mjs +459 -0
- package/dist/chunk-T4QJQK76.mjs.map +1 -0
- package/dist/chunk-TQAEEJB4.mjs +157 -0
- package/dist/chunk-TQAEEJB4.mjs.map +1 -0
- package/dist/chunk-UB5UOSHB.mjs +458 -0
- package/dist/chunk-UB5UOSHB.mjs.map +1 -0
- package/dist/chunk-USWZZUEH.mjs +25 -0
- package/dist/chunk-USWZZUEH.mjs.map +1 -0
- package/dist/chunk-UVCIEUJC.mjs +16 -0
- package/dist/chunk-UVCIEUJC.mjs.map +1 -0
- package/dist/chunk-UXUAWNO5.mjs +396 -0
- package/dist/chunk-UXUAWNO5.mjs.map +1 -0
- package/dist/chunk-V3XURYJO.mjs +756 -0
- package/dist/chunk-V3XURYJO.mjs.map +1 -0
- package/dist/chunk-V6WE6JSZ.mjs +352 -0
- package/dist/chunk-V6WE6JSZ.mjs.map +1 -0
- package/dist/chunk-V7RBCSDJ.mjs +170 -0
- package/dist/chunk-V7RBCSDJ.mjs.map +1 -0
- package/dist/chunk-VCANOYFI.mjs +588 -0
- package/dist/chunk-VCANOYFI.mjs.map +1 -0
- package/dist/chunk-VY2UYN5R.mjs +224 -0
- package/dist/chunk-VY2UYN5R.mjs.map +1 -0
- package/dist/chunk-W2CRQFF6.mjs +1352 -0
- package/dist/chunk-W2CRQFF6.mjs.map +1 -0
- package/dist/chunk-WDU6QXNK.mjs +872 -0
- package/dist/chunk-WDU6QXNK.mjs.map +1 -0
- package/dist/chunk-WZ5QFROO.mjs +23 -0
- package/dist/chunk-WZ5QFROO.mjs.map +1 -0
- package/dist/chunk-XIVV5IWN.mjs +541 -0
- package/dist/chunk-XIVV5IWN.mjs.map +1 -0
- package/dist/chunk-YW7OBE6Q.mjs +119 -0
- package/dist/chunk-YW7OBE6Q.mjs.map +1 -0
- package/dist/chunk-Z5CQMP54.mjs +365 -0
- package/dist/chunk-Z5CQMP54.mjs.map +1 -0
- package/dist/chunk-ZBE6MLHL.mjs +230 -0
- package/dist/chunk-ZBE6MLHL.mjs.map +1 -0
- package/dist/chunk-ZVWA4ZQ3.mjs +189 -0
- package/dist/chunk-ZVWA4ZQ3.mjs.map +1 -0
- package/dist/chunk-ZZ57EH5Z.mjs +173 -0
- package/dist/chunk-ZZ57EH5Z.mjs.map +1 -0
- package/dist/client-BT1mFQas.d.mts +447 -0
- package/dist/client-Nn0q4eO4.d.ts +447 -0
- package/dist/client-cache-CIlyBlmx.d.ts +6 -0
- package/dist/client-cache-D-EZ7XVW.d.mts +6 -0
- package/dist/client-plugins-BI2R6Eae.d.mts +1926 -0
- package/dist/client-plugins-DU9oMspX.d.ts +1926 -0
- package/dist/client-plugins.cjs +415 -0
- package/dist/client-plugins.cjs.map +1 -0
- package/dist/client-plugins.d.mts +22 -0
- package/dist/client-plugins.d.ts +22 -0
- package/dist/client-plugins.mjs +10 -0
- package/dist/client-plugins.mjs.map +1 -0
- package/dist/client.cjs +5402 -0
- package/dist/client.cjs.map +1 -0
- package/dist/client.d.mts +447 -0
- package/dist/client.d.ts +447 -0
- package/dist/client.mjs +110 -0
- package/dist/client.mjs.map +1 -0
- package/dist/config.cjs +38 -0
- package/dist/config.cjs.map +1 -0
- package/dist/config.d.mts +29 -0
- package/dist/config.d.ts +29 -0
- package/dist/config.mjs +10 -0
- package/dist/config.mjs.map +1 -0
- package/dist/cron.cjs +406 -0
- package/dist/cron.cjs.map +1 -0
- package/dist/cron.d.mts +78 -0
- package/dist/cron.d.ts +78 -0
- package/dist/cron.mjs +30 -0
- package/dist/cron.mjs.map +1 -0
- package/dist/deferred.cjs +438 -0
- package/dist/deferred.cjs.map +1 -0
- package/dist/deferred.d.mts +42 -0
- package/dist/deferred.d.ts +42 -0
- package/dist/deferred.mjs +28 -0
- package/dist/deferred.mjs.map +1 -0
- package/dist/deployment.cjs +199 -0
- package/dist/deployment.cjs.map +1 -0
- package/dist/deployment.d.mts +34 -0
- package/dist/deployment.d.ts +34 -0
- package/dist/deployment.mjs +38 -0
- package/dist/deployment.mjs.map +1 -0
- package/dist/devtools-REQTS3I7.mjs +371 -0
- package/dist/devtools-REQTS3I7.mjs.map +1 -0
- package/dist/devtools-client-3XRTBND5.mjs +216 -0
- package/dist/devtools-client-3XRTBND5.mjs.map +1 -0
- package/dist/devtools-ui-NJKFORTG.mjs +1349 -0
- package/dist/devtools-ui-NJKFORTG.mjs.map +1 -0
- package/dist/docs.cjs +5548 -0
- package/dist/docs.cjs.map +1 -0
- package/dist/docs.d.mts +69 -0
- package/dist/docs.d.ts +69 -0
- package/dist/docs.mjs +47 -0
- package/dist/docs.mjs.map +1 -0
- package/dist/env-types.cjs +232 -0
- package/dist/env-types.cjs.map +1 -0
- package/dist/env-types.d.mts +12 -0
- package/dist/env-types.d.ts +12 -0
- package/dist/env-types.mjs +11 -0
- package/dist/env-types.mjs.map +1 -0
- package/dist/env.cjs +215 -0
- package/dist/env.cjs.map +1 -0
- package/dist/env.d.mts +45 -0
- package/dist/env.d.ts +45 -0
- package/dist/env.mjs +22 -0
- package/dist/env.mjs.map +1 -0
- package/dist/environment/vite.d.mts +22 -0
- package/dist/environment/vite.d.ts +22 -0
- package/dist/environment.cjs +96 -0
- package/dist/environment.cjs.map +1 -0
- package/dist/environment.d.mts +18 -0
- package/dist/environment.d.ts +18 -0
- package/dist/environment.mjs +14 -0
- package/dist/environment.mjs.map +1 -0
- package/dist/headers.cjs +126 -0
- package/dist/headers.cjs.map +1 -0
- package/dist/headers.d.mts +22 -0
- package/dist/headers.d.ts +22 -0
- package/dist/headers.mjs +12 -0
- package/dist/headers.mjs.map +1 -0
- package/dist/i18n/client.d.mts +32 -0
- package/dist/i18n/client.d.ts +32 -0
- package/dist/i18n/index.d.mts +20 -0
- package/dist/i18n/index.d.ts +20 -0
- package/dist/i18n/server.d.mts +30 -0
- package/dist/i18n/server.d.ts +30 -0
- package/dist/image/server.d.mts +37 -0
- package/dist/image/server.d.ts +37 -0
- package/dist/image/sharp.d.mts +7 -0
- package/dist/image/sharp.d.ts +7 -0
- package/dist/image-config-Duob7wER.d.mts +50 -0
- package/dist/image-config-Duob7wER.d.ts +50 -0
- package/dist/image.cjs +209 -0
- package/dist/image.cjs.map +1 -0
- package/dist/image.d.mts +39 -0
- package/dist/image.d.ts +39 -0
- package/dist/image.mjs +165 -0
- package/dist/image.mjs.map +1 -0
- package/dist/index.cjs +42186 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.mts +454 -0
- package/dist/index.d.ts +454 -0
- package/dist/index.mjs +980 -0
- package/dist/index.mjs.map +1 -0
- package/dist/integration-api-CHT2OKAf.d.mts +93 -0
- package/dist/integration-api-CHT2OKAf.d.ts +93 -0
- package/dist/integration-orm-GQLGU66X.mjs +13 -0
- package/dist/integration-orm-GQLGU66X.mjs.map +1 -0
- package/dist/integrations.cjs +2820 -0
- package/dist/integrations.cjs.map +1 -0
- package/dist/integrations.d.mts +22 -0
- package/dist/integrations.d.ts +22 -0
- package/dist/integrations.mjs +51 -0
- package/dist/integrations.mjs.map +1 -0
- package/dist/internal/build-runtime.cjs +643 -322
- package/dist/internal/build-runtime.cjs.map +1 -1
- package/dist/internal/build-runtime.d.mts +39 -0
- package/dist/internal/build-runtime.d.ts +39 -0
- package/dist/internal/build-runtime.mjs +11 -10
- package/dist/internal/client-runtime.d.mts +2 -0
- package/dist/internal/client-runtime.d.ts +2 -0
- package/dist/internal/config-runtime.cjs +135 -39
- package/dist/internal/config-runtime.cjs.map +1 -1
- package/dist/internal/config-runtime.d.mts +39 -0
- package/dist/internal/config-runtime.d.ts +39 -0
- package/dist/internal/config-runtime.mjs +5 -4
- package/dist/internal/production-node-env.d.mts +12 -0
- package/dist/internal/production-node-env.d.ts +12 -0
- package/dist/internal/production-runtime.d.mts +39 -0
- package/dist/internal/production-runtime.d.ts +39 -0
- package/dist/layers-VWVDTPUZ.mjs +16 -0
- package/dist/layers-VWVDTPUZ.mjs.map +1 -0
- package/dist/manager-THKFTOFE.mjs +10 -0
- package/dist/manager-THKFTOFE.mjs.map +1 -0
- package/dist/markdown.cjs +364 -0
- package/dist/markdown.cjs.map +1 -0
- package/dist/markdown.d.mts +60 -0
- package/dist/markdown.d.ts +60 -0
- package/dist/markdown.mjs +18 -0
- package/dist/markdown.mjs.map +1 -0
- package/dist/metadata-Cm9ujH4I.d.ts +22 -0
- package/dist/metadata-DacXbnLA.d.mts +22 -0
- package/dist/middleware.cjs +2148 -0
- package/dist/middleware.cjs.map +1 -0
- package/dist/middleware.d.mts +164 -0
- package/dist/middleware.d.ts +164 -0
- package/dist/middleware.mjs +49 -0
- package/dist/middleware.mjs.map +1 -0
- package/dist/navigation-errors-Dvwpzaer.d.mts +13 -0
- package/dist/navigation-errors-Dvwpzaer.d.ts +13 -0
- package/dist/navigation.cjs +1329 -0
- package/dist/navigation.cjs.map +1 -0
- package/dist/navigation.d.mts +14 -0
- package/dist/navigation.d.ts +14 -0
- package/dist/navigation.mjs +33 -0
- package/dist/navigation.mjs.map +1 -0
- package/dist/nitro-QO5LV6QK.mjs +689 -0
- package/dist/nitro-QO5LV6QK.mjs.map +1 -0
- package/dist/observability.cjs +186 -0
- package/dist/observability.cjs.map +1 -0
- package/dist/observability.d.mts +335 -0
- package/dist/observability.d.ts +335 -0
- package/dist/observability.mjs +16 -0
- package/dist/observability.mjs.map +1 -0
- package/dist/params-BALtrRim.d.ts +15 -0
- package/dist/params-ry-lxqmy.d.mts +15 -0
- package/dist/plugin-BJDf43dc.d.mts +165 -0
- package/dist/plugin-BJDf43dc.d.ts +165 -0
- package/dist/plugin.cjs +23470 -0
- package/dist/plugin.cjs.map +1 -1
- package/dist/plugin.d.mts +22 -0
- package/dist/plugin.d.ts +22 -0
- package/dist/plugin.mjs +8 -7
- package/dist/production-runtime-4KKq1AVC.d.mts +79 -0
- package/dist/production-runtime-C_B79w2P.d.mts +28 -0
- package/dist/production-runtime-DDEM1D2q.d.ts +28 -0
- package/dist/production-runtime-DRsWDN2x.d.ts +79 -0
- package/dist/query/client.d.mts +61 -0
- package/dist/query/client.d.ts +61 -0
- package/dist/query/index.d.mts +90 -0
- package/dist/query/index.d.ts +90 -0
- package/dist/query/parsers.d.mts +25 -0
- package/dist/query/parsers.d.ts +25 -0
- package/dist/query/server.d.mts +55 -0
- package/dist/query/server.d.ts +55 -0
- package/dist/request-Dsq4kGW0.d.mts +6 -0
- package/dist/request-udtobOLv.d.ts +6 -0
- package/dist/request.d.mts +2 -0
- package/dist/request.d.ts +2 -0
- package/dist/resolver-DJqjLMg_.d.mts +14 -0
- package/dist/resolver-IH4RmPEl.d.ts +14 -0
- package/dist/route-runtime-DoOHzCAD.d.mts +38 -0
- package/dist/route-runtime-DoOHzCAD.d.ts +38 -0
- package/dist/router.d.mts +36 -0
- package/dist/router.d.ts +36 -0
- package/dist/routes.d.mts +224 -0
- package/dist/routes.d.ts +224 -0
- package/dist/runtime-9nQjVM7X.d.mts +206 -0
- package/dist/runtime-Cxpq6xZN.d.mts +27 -0
- package/dist/runtime-DgeS2skB.d.ts +206 -0
- package/dist/runtime-bv63eUiO.d.ts +27 -0
- package/dist/server-action-security.d.mts +43 -0
- package/dist/server-action-security.d.ts +43 -0
- package/dist/server-fn-client.d.mts +32 -0
- package/dist/server-fn-client.d.ts +32 -0
- package/dist/server-fn.d.mts +93 -0
- package/dist/server-fn.d.ts +93 -0
- package/dist/server-plugins.d.mts +55 -0
- package/dist/server-plugins.d.ts +55 -0
- package/dist/server-query-client.d.mts +50 -0
- package/dist/server-query-client.d.ts +50 -0
- package/dist/server-query.d.mts +36 -0
- package/dist/server-query.d.ts +36 -0
- package/dist/server.cjs +731 -447
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.mts +48 -0
- package/dist/server.d.ts +48 -0
- package/dist/server.mjs +9 -8
- package/dist/server.mjs.map +1 -1
- package/dist/storage.d.mts +52 -0
- package/dist/storage.d.ts +52 -0
- package/dist/testing.d.mts +101 -0
- package/dist/testing.d.ts +101 -0
- package/dist/transport-BmbGTXA5.d.mts +49 -0
- package/dist/transport-BmbGTXA5.d.ts +49 -0
- package/dist/types-BMxWr97v.d.mts +81 -0
- package/dist/types-BMxWr97v.d.ts +81 -0
- package/dist/types-C9N-nk5R.d.mts +53 -0
- package/dist/types-C9N-nk5R.d.ts +53 -0
- package/dist/types-D1A6-XvH.d.mts +73 -0
- package/dist/types-D1A6-XvH.d.ts +73 -0
- package/dist/utils-B-cUHwoK.d.ts +23 -0
- package/dist/utils-Cm41AefV.d.mts +23 -0
- package/dist/version.cjs +1 -1
- package/dist/version.cjs.map +1 -1
- package/dist/version.d.mts +3 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.mjs +1 -1
- package/dist/vite.cjs +682 -437
- package/dist/vite.cjs.map +1 -1
- package/dist/vite.d.mts +22 -0
- package/dist/vite.d.ts +22 -0
- package/dist/vite.mjs +6 -5
- package/dist/workflows.d.mts +110 -0
- package/dist/workflows.d.ts +110 -0
- package/package.json +3 -2
- package/types/client.d.ts +1 -1
- package/types/image.d.ts +4 -0
- package/types/images.d.ts +59 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export { a5 as loadConfig, a4 as resolveConfig, a6 as resolveDeployConfig } from '../client-plugins-BI2R6Eae.mjs';
|
|
2
|
+
import { build, createServer, loadEnv } from 'vite';
|
|
3
|
+
export { l as logger } from '../utils-Cm41AefV.mjs';
|
|
4
|
+
import '../plugin-BJDf43dc.mjs';
|
|
5
|
+
import 'react';
|
|
6
|
+
import 'http';
|
|
7
|
+
import '../types-D1A6-XvH.mjs';
|
|
8
|
+
import 'db0';
|
|
9
|
+
import 'unstorage';
|
|
10
|
+
import '../integration-api-CHT2OKAf.mjs';
|
|
11
|
+
import '@farming-labs/orm';
|
|
12
|
+
import '../types-C9N-nk5R.mjs';
|
|
13
|
+
import '@farming-labs/docs';
|
|
14
|
+
import '../markdown.mjs';
|
|
15
|
+
import '../observability.mjs';
|
|
16
|
+
import '../workflows.mjs';
|
|
17
|
+
import '../cron.mjs';
|
|
18
|
+
import '../env.mjs';
|
|
19
|
+
import '../server-action-security.mjs';
|
|
20
|
+
import '../image-config-Duob7wER.mjs';
|
|
21
|
+
import '../types-BMxWr97v.mjs';
|
|
22
|
+
import '../cache.mjs';
|
|
23
|
+
import '../route-runtime-DoOHzCAD.mjs';
|
|
24
|
+
|
|
25
|
+
type FarmProductionViteBuilder = "rollup" | "rolldown";
|
|
26
|
+
interface FarmProductionViteRuntime {
|
|
27
|
+
build: typeof build;
|
|
28
|
+
createServer: typeof createServer;
|
|
29
|
+
loadEnv: typeof loadEnv;
|
|
30
|
+
builder: FarmProductionViteBuilder;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Prefer Vite's Rolldown-powered production builder on supported Node releases.
|
|
34
|
+
* Vite 5 remains the compatibility path for Node 18, --no-optional installs,
|
|
35
|
+
* and projects that explicitly request Rollup.
|
|
36
|
+
*/
|
|
37
|
+
declare function loadFarmProductionVite(): Promise<FarmProductionViteRuntime>;
|
|
38
|
+
|
|
39
|
+
export { type FarmProductionViteRuntime, loadFarmProductionVite };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export { a5 as loadConfig, a4 as resolveConfig, a6 as resolveDeployConfig } from '../client-plugins-DU9oMspX.js';
|
|
2
|
+
import { build, createServer, loadEnv } from 'vite';
|
|
3
|
+
export { l as logger } from '../utils-B-cUHwoK.js';
|
|
4
|
+
import '../plugin-BJDf43dc.js';
|
|
5
|
+
import 'react';
|
|
6
|
+
import 'http';
|
|
7
|
+
import '../types-D1A6-XvH.js';
|
|
8
|
+
import 'db0';
|
|
9
|
+
import 'unstorage';
|
|
10
|
+
import '../integration-api-CHT2OKAf.js';
|
|
11
|
+
import '@farming-labs/orm';
|
|
12
|
+
import '../types-C9N-nk5R.js';
|
|
13
|
+
import '@farming-labs/docs';
|
|
14
|
+
import '../markdown.js';
|
|
15
|
+
import '../observability.js';
|
|
16
|
+
import '../workflows.js';
|
|
17
|
+
import '../cron.js';
|
|
18
|
+
import '../env.js';
|
|
19
|
+
import '../server-action-security.js';
|
|
20
|
+
import '../image-config-Duob7wER.js';
|
|
21
|
+
import '../types-BMxWr97v.js';
|
|
22
|
+
import '../cache.js';
|
|
23
|
+
import '../route-runtime-DoOHzCAD.js';
|
|
24
|
+
|
|
25
|
+
type FarmProductionViteBuilder = "rollup" | "rolldown";
|
|
26
|
+
interface FarmProductionViteRuntime {
|
|
27
|
+
build: typeof build;
|
|
28
|
+
createServer: typeof createServer;
|
|
29
|
+
loadEnv: typeof loadEnv;
|
|
30
|
+
builder: FarmProductionViteBuilder;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Prefer Vite's Rolldown-powered production builder on supported Node releases.
|
|
34
|
+
* Vite 5 remains the compatibility path for Node 18, --no-optional installs,
|
|
35
|
+
* and projects that explicitly request Rollup.
|
|
36
|
+
*/
|
|
37
|
+
declare function loadFarmProductionVite(): Promise<FarmProductionViteRuntime>;
|
|
38
|
+
|
|
39
|
+
export { type FarmProductionViteRuntime, loadFarmProductionVite };
|
|
@@ -5,16 +5,17 @@ import {
|
|
|
5
5
|
loadConfig,
|
|
6
6
|
resolveConfig,
|
|
7
7
|
resolveDeployConfig
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-B4W3BNTL.mjs";
|
|
9
9
|
import "../chunk-UVCIEUJC.mjs";
|
|
10
|
-
import "../chunk-
|
|
10
|
+
import "../chunk-RQ633A5I.mjs";
|
|
11
|
+
import "../chunk-I4CUBGVF.mjs";
|
|
11
12
|
import "../chunk-74YTBPTY.mjs";
|
|
12
13
|
import "../chunk-7MABZJIM.mjs";
|
|
13
14
|
import "../chunk-YW7OBE6Q.mjs";
|
|
14
15
|
import "../chunk-GY2STC2S.mjs";
|
|
15
16
|
import "../chunk-UB5UOSHB.mjs";
|
|
16
|
-
import "../chunk-
|
|
17
|
-
import "../chunk-
|
|
17
|
+
import "../chunk-ZVWA4ZQ3.mjs";
|
|
18
|
+
import "../chunk-7FBJLMQH.mjs";
|
|
18
19
|
import "../chunk-XIVV5IWN.mjs";
|
|
19
20
|
import "../chunk-GXASWWJU.mjs";
|
|
20
21
|
import "../chunk-K4667E2Q.mjs";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keep overlapping production operations on the production condition.
|
|
3
|
+
*
|
|
4
|
+
* The state lives on `globalThis` so independently loaded CJS/ESM copies of
|
|
5
|
+
* Farm share one refcount. The first entrant captures the caller's value and
|
|
6
|
+
* only the last operation to settle restores it.
|
|
7
|
+
*
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
declare function withProductionNodeEnv<T>(operation: () => T | PromiseLike<T>): Promise<T>;
|
|
11
|
+
|
|
12
|
+
export { withProductionNodeEnv };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keep overlapping production operations on the production condition.
|
|
3
|
+
*
|
|
4
|
+
* The state lives on `globalThis` so independently loaded CJS/ESM copies of
|
|
5
|
+
* Farm share one refcount. The first entrant captures the caller's value and
|
|
6
|
+
* only the last operation to settle restores it.
|
|
7
|
+
*
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
declare function withProductionNodeEnv<T>(operation: () => T | PromiseLike<T>): Promise<T>;
|
|
11
|
+
|
|
12
|
+
export { withProductionNodeEnv };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export { _runWithAfterRequest } from '../after.mjs';
|
|
2
|
+
export { _ as _runWithCurrentRequest, g as getCurrentRequest } from '../request-Dsq4kGW0.mjs';
|
|
3
|
+
export { configureFarmCache, createFarmCacheKey, getFarmDataCache, normalizeRevalidatePath } from '../cache.mjs';
|
|
4
|
+
export { c as createFarmLocaleCookie, g as getFarmLocaleVaryHeaders } from '../resolver-DJqjLMg_.mjs';
|
|
5
|
+
export { localizeFarmHref, localizeFarmPathname, stripFarmLocaleFromPathname } from '../i18n/index.mjs';
|
|
6
|
+
export { a as addMetadataImageReference, m as mergeMetadata, r as renderMetadataHead } from '../metadata-DacXbnLA.mjs';
|
|
7
|
+
export { _ as _runWithMiddlewareContext, b as _runWithMiddlewareData, a as applyProductionMiddlewareHeaders, c as createProductionMiddlewareRunner } from '../production-runtime-4KKq1AVC.mjs';
|
|
8
|
+
export { g as getFarmRedirectError, i as isFarmNotFoundError, a as isFarmRedirectError } from '../navigation-errors-Dvwpzaer.mjs';
|
|
9
|
+
export { configureFarmObservability, emitFarmEvent } from '../observability.mjs';
|
|
10
|
+
import { F as FarmConfig, e as FarmContextFactoryInput } from '../client-plugins-BI2R6Eae.mjs';
|
|
11
|
+
import 'node:http';
|
|
12
|
+
import '../types-BMxWr97v.mjs';
|
|
13
|
+
import '../plugin-BJDf43dc.mjs';
|
|
14
|
+
import 'react';
|
|
15
|
+
import 'http';
|
|
16
|
+
import '../types-D1A6-XvH.mjs';
|
|
17
|
+
import 'db0';
|
|
18
|
+
import 'unstorage';
|
|
19
|
+
import '../integration-api-CHT2OKAf.mjs';
|
|
20
|
+
import '@farming-labs/orm';
|
|
21
|
+
import '../types-C9N-nk5R.mjs';
|
|
22
|
+
import '@farming-labs/docs';
|
|
23
|
+
import '../markdown.mjs';
|
|
24
|
+
import 'vite';
|
|
25
|
+
import '../workflows.mjs';
|
|
26
|
+
import '../cron.mjs';
|
|
27
|
+
import '../env.mjs';
|
|
28
|
+
import '../server-action-security.mjs';
|
|
29
|
+
import '../image-config-Duob7wER.mjs';
|
|
30
|
+
import '../route-runtime-DoOHzCAD.mjs';
|
|
31
|
+
|
|
32
|
+
declare const FARM_ROUTE_CONTEXT_SYMBOL: unique symbol;
|
|
33
|
+
type FarmRouteContextCarrier<TContext = unknown> = {
|
|
34
|
+
[FARM_ROUTE_CONTEXT_SYMBOL]?: TContext;
|
|
35
|
+
};
|
|
36
|
+
declare function resolveFarmRouteContext(config: Pick<FarmConfig, "context">, input: FarmContextFactoryInput): Promise<unknown>;
|
|
37
|
+
declare function withFarmRouteContext<TProps extends object, TContext>(props: TProps, context: TContext | undefined): TProps & FarmRouteContextCarrier<TContext>;
|
|
38
|
+
|
|
39
|
+
export { resolveFarmRouteContext, withFarmRouteContext };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export { _runWithAfterRequest } from '../after.js';
|
|
2
|
+
export { _ as _runWithCurrentRequest, g as getCurrentRequest } from '../request-udtobOLv.js';
|
|
3
|
+
export { configureFarmCache, createFarmCacheKey, getFarmDataCache, normalizeRevalidatePath } from '../cache.js';
|
|
4
|
+
export { c as createFarmLocaleCookie, g as getFarmLocaleVaryHeaders } from '../resolver-IH4RmPEl.js';
|
|
5
|
+
export { localizeFarmHref, localizeFarmPathname, stripFarmLocaleFromPathname } from '../i18n/index.js';
|
|
6
|
+
export { a as addMetadataImageReference, m as mergeMetadata, r as renderMetadataHead } from '../metadata-Cm9ujH4I.js';
|
|
7
|
+
export { _ as _runWithMiddlewareContext, b as _runWithMiddlewareData, a as applyProductionMiddlewareHeaders, c as createProductionMiddlewareRunner } from '../production-runtime-DRsWDN2x.js';
|
|
8
|
+
export { g as getFarmRedirectError, i as isFarmNotFoundError, a as isFarmRedirectError } from '../navigation-errors-Dvwpzaer.js';
|
|
9
|
+
export { configureFarmObservability, emitFarmEvent } from '../observability.js';
|
|
10
|
+
import { F as FarmConfig, e as FarmContextFactoryInput } from '../client-plugins-DU9oMspX.js';
|
|
11
|
+
import 'node:http';
|
|
12
|
+
import '../types-BMxWr97v.js';
|
|
13
|
+
import '../plugin-BJDf43dc.js';
|
|
14
|
+
import 'react';
|
|
15
|
+
import 'http';
|
|
16
|
+
import '../types-D1A6-XvH.js';
|
|
17
|
+
import 'db0';
|
|
18
|
+
import 'unstorage';
|
|
19
|
+
import '../integration-api-CHT2OKAf.js';
|
|
20
|
+
import '@farming-labs/orm';
|
|
21
|
+
import '../types-C9N-nk5R.js';
|
|
22
|
+
import '@farming-labs/docs';
|
|
23
|
+
import '../markdown.js';
|
|
24
|
+
import 'vite';
|
|
25
|
+
import '../workflows.js';
|
|
26
|
+
import '../cron.js';
|
|
27
|
+
import '../env.js';
|
|
28
|
+
import '../server-action-security.js';
|
|
29
|
+
import '../image-config-Duob7wER.js';
|
|
30
|
+
import '../route-runtime-DoOHzCAD.js';
|
|
31
|
+
|
|
32
|
+
declare const FARM_ROUTE_CONTEXT_SYMBOL: unique symbol;
|
|
33
|
+
type FarmRouteContextCarrier<TContext = unknown> = {
|
|
34
|
+
[FARM_ROUTE_CONTEXT_SYMBOL]?: TContext;
|
|
35
|
+
};
|
|
36
|
+
declare function resolveFarmRouteContext(config: Pick<FarmConfig, "context">, input: FarmContextFactoryInput): Promise<unknown>;
|
|
37
|
+
declare function withFarmRouteContext<TProps extends object, TContext>(props: TProps, context: TContext | undefined): TProps & FarmRouteContextCarrier<TContext>;
|
|
38
|
+
|
|
39
|
+
export { resolveFarmRouteContext, withFarmRouteContext };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getFarmAppDirectories,
|
|
3
|
+
getFarmLayerAliases,
|
|
4
|
+
getFarmSourceRoots,
|
|
5
|
+
loadFarmConfigFile,
|
|
6
|
+
resolveFarmLayers
|
|
7
|
+
} from "./chunk-74YTBPTY.mjs";
|
|
8
|
+
import "./chunk-CGILA3WO.mjs";
|
|
9
|
+
export {
|
|
10
|
+
getFarmAppDirectories,
|
|
11
|
+
getFarmLayerAliases,
|
|
12
|
+
getFarmSourceRoots,
|
|
13
|
+
loadFarmConfigFile,
|
|
14
|
+
resolveFarmLayers
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=layers-VWVDTPUZ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
|
|
21
|
+
// src/markdown.ts
|
|
22
|
+
var markdown_exports = {};
|
|
23
|
+
__export(markdown_exports, {
|
|
24
|
+
applyMarkdownNegotiationHeaders: () => applyMarkdownNegotiationHeaders,
|
|
25
|
+
createMarkdownMirrorResponse: () => createMarkdownMirrorResponse,
|
|
26
|
+
htmlToMarkdown: () => htmlToMarkdown,
|
|
27
|
+
requestAcceptsMarkdown: () => requestAcceptsMarkdown,
|
|
28
|
+
resolveMarkdownConfig: () => resolveMarkdownConfig,
|
|
29
|
+
resolveMarkdownMirrorTarget: () => resolveMarkdownMirrorTarget
|
|
30
|
+
});
|
|
31
|
+
module.exports = __toCommonJS(markdown_exports);
|
|
32
|
+
function resolveMarkdownConfig(config) {
|
|
33
|
+
if (config === false) {
|
|
34
|
+
return {
|
|
35
|
+
enabled: false,
|
|
36
|
+
expose: [],
|
|
37
|
+
cache: false,
|
|
38
|
+
includeMetadata: true
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
if (config === true || config === void 0) {
|
|
42
|
+
return {
|
|
43
|
+
enabled: true,
|
|
44
|
+
expose: true,
|
|
45
|
+
cache: false,
|
|
46
|
+
includeMetadata: true
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
const exposeInput = config.expose ?? config.routes ?? true;
|
|
50
|
+
const expose = exposeInput === true ? true : Array.isArray(exposeInput) ? exposeInput.map(normalizeMarkdownRouteInput) : [];
|
|
51
|
+
return {
|
|
52
|
+
enabled: config.enabled !== false && (expose === true || expose.length > 0),
|
|
53
|
+
expose,
|
|
54
|
+
cache: config.cache ?? false,
|
|
55
|
+
includeMetadata: config.includeMetadata ?? true
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
__name(resolveMarkdownConfig, "resolveMarkdownConfig");
|
|
59
|
+
function resolveMarkdownMirrorTarget(config, pathname, options = {}) {
|
|
60
|
+
const hasMarkdownExtension = pathname.toLowerCase().endsWith(".md");
|
|
61
|
+
if (!config?.enabled || !hasMarkdownExtension && !requestAcceptsMarkdown(options.accept)) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
const targetPathname = normalizeMarkdownRoute(
|
|
65
|
+
hasMarkdownExtension ? pathname.slice(0, -".md".length) || "/" : pathname
|
|
66
|
+
);
|
|
67
|
+
const route = findExposedMarkdownRoute(config, targetPathname);
|
|
68
|
+
if (!route && config.expose !== true) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
pathname: targetPathname,
|
|
73
|
+
route
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
__name(resolveMarkdownMirrorTarget, "resolveMarkdownMirrorTarget");
|
|
77
|
+
async function createMarkdownMirrorResponse(options) {
|
|
78
|
+
if (options.request.method !== "GET" && options.request.method !== "HEAD") {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
const requestUrl = new URL(options.request.url);
|
|
82
|
+
const hasMarkdownExtension = requestUrl.pathname.toLowerCase().endsWith(".md");
|
|
83
|
+
const target = resolveMarkdownMirrorTarget(options.config, requestUrl.pathname, {
|
|
84
|
+
accept: options.request.headers.get("accept")
|
|
85
|
+
});
|
|
86
|
+
if (!target) {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
if (options.routeExists && !options.routeExists(target.pathname)) {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
const pageUrl = new URL(options.request.url);
|
|
93
|
+
pageUrl.pathname = target.pathname;
|
|
94
|
+
const headers = new Headers(options.request.headers);
|
|
95
|
+
headers.set("accept", "text/html");
|
|
96
|
+
const pageResponse = await options.renderPage(
|
|
97
|
+
new Request(pageUrl, {
|
|
98
|
+
method: "GET",
|
|
99
|
+
headers
|
|
100
|
+
})
|
|
101
|
+
);
|
|
102
|
+
if (!isHtmlResponse(pageResponse)) {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
const html = await pageResponse.text();
|
|
106
|
+
const markdown = htmlToMarkdown(html, {
|
|
107
|
+
title: target.route?.title,
|
|
108
|
+
includeMetadata: options.config?.includeMetadata ?? true,
|
|
109
|
+
sourcePath: target.pathname
|
|
110
|
+
});
|
|
111
|
+
const headersOut = new Headers({
|
|
112
|
+
"Content-Type": "text/markdown; charset=utf-8",
|
|
113
|
+
"Content-Location": target.pathname === "/" ? "/index.md" : `${target.pathname}.md`,
|
|
114
|
+
"X-Farm-Markdown-Route": target.pathname
|
|
115
|
+
});
|
|
116
|
+
if (!hasMarkdownExtension) {
|
|
117
|
+
headersOut.set("Vary", "Accept");
|
|
118
|
+
}
|
|
119
|
+
const cache = target.route?.cache ?? options.config?.cache ?? false;
|
|
120
|
+
headersOut.set("Cache-Control", createMarkdownCacheHeader(cache));
|
|
121
|
+
return new Response(options.request.method === "HEAD" ? null : markdown, {
|
|
122
|
+
status: pageResponse.status,
|
|
123
|
+
headers: headersOut
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
__name(createMarkdownMirrorResponse, "createMarkdownMirrorResponse");
|
|
127
|
+
function applyMarkdownNegotiationHeaders(response, options) {
|
|
128
|
+
if (!isHtmlResponse(response)) {
|
|
129
|
+
return response;
|
|
130
|
+
}
|
|
131
|
+
const target = resolveMarkdownMirrorTarget(options.config, options.pathname, {
|
|
132
|
+
accept: "text/markdown"
|
|
133
|
+
});
|
|
134
|
+
if (!target) {
|
|
135
|
+
return response;
|
|
136
|
+
}
|
|
137
|
+
const alternatePath = getMarkdownAlternatePath(target.pathname);
|
|
138
|
+
const headers = new Headers(response.headers);
|
|
139
|
+
appendHeaderToken(headers, "Vary", "Accept");
|
|
140
|
+
headers.append("Link", `<${alternatePath}>; rel="alternate"; type="text/markdown"`);
|
|
141
|
+
return new Response(response.body, {
|
|
142
|
+
status: response.status,
|
|
143
|
+
statusText: response.statusText,
|
|
144
|
+
headers
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
__name(applyMarkdownNegotiationHeaders, "applyMarkdownNegotiationHeaders");
|
|
148
|
+
function htmlToMarkdown(html, options = {}) {
|
|
149
|
+
const title = options.title ?? extractHtmlTitle(html);
|
|
150
|
+
let source = extractHtmlBody(html).replace(/<script\b[^>]*>[\s\S]*?<\/script>/gi, "").replace(/<style\b[^>]*>[\s\S]*?<\/style>/gi, "").replace(/<noscript\b[^>]*>[\s\S]*?<\/noscript>/gi, "").replace(/<!--[\s\S]*?-->/g, "");
|
|
151
|
+
source = source.replace(/<pre\b[^>]*><code\b[^>]*>([\s\S]*?)<\/code><\/pre>/gi, (_, code) => {
|
|
152
|
+
return `
|
|
153
|
+
|
|
154
|
+
\`\`\`
|
|
155
|
+
${decodeHtml(stripTags(code)).trim()}
|
|
156
|
+
\`\`\`
|
|
157
|
+
|
|
158
|
+
`;
|
|
159
|
+
});
|
|
160
|
+
source = source.replace(/<pre\b[^>]*>([\s\S]*?)<\/pre>/gi, (_, code) => {
|
|
161
|
+
return `
|
|
162
|
+
|
|
163
|
+
\`\`\`
|
|
164
|
+
${decodeHtml(stripTags(code)).trim()}
|
|
165
|
+
\`\`\`
|
|
166
|
+
|
|
167
|
+
`;
|
|
168
|
+
});
|
|
169
|
+
source = source.replace(/<h([1-6])\b[^>]*>([\s\S]*?)<\/h\1>/gi, (_, level, content) => {
|
|
170
|
+
return `
|
|
171
|
+
|
|
172
|
+
${"#".repeat(Number(level))} ${toInlineMarkdown(content).trim()}
|
|
173
|
+
|
|
174
|
+
`;
|
|
175
|
+
});
|
|
176
|
+
source = source.replace(/<p\b[^>]*>([\s\S]*?)<\/p>/gi, (_, content) => {
|
|
177
|
+
return `
|
|
178
|
+
|
|
179
|
+
${toInlineMarkdown(content).trim()}
|
|
180
|
+
|
|
181
|
+
`;
|
|
182
|
+
});
|
|
183
|
+
source = source.replace(/<blockquote\b[^>]*>([\s\S]*?)<\/blockquote>/gi, (_, content) => {
|
|
184
|
+
const quote = htmlToMarkdown(content, { includeMetadata: false }).split("\n").filter((line) => line.trim().length > 0).map((line) => `> ${line}`).join("\n");
|
|
185
|
+
return `
|
|
186
|
+
|
|
187
|
+
${quote}
|
|
188
|
+
|
|
189
|
+
`;
|
|
190
|
+
});
|
|
191
|
+
source = source.replace(/<li\b[^>]*>([\s\S]*?)<\/li>/gi, (_, content) => {
|
|
192
|
+
return `
|
|
193
|
+
- ${toInlineMarkdown(content).trim()}`;
|
|
194
|
+
});
|
|
195
|
+
source = source.replace(/<\/?(ul|ol|main|section|article|header|footer|nav|aside|div)\b[^>]*>/gi, "\n").replace(/<br\s*\/?>/gi, "\n").replace(/<hr\s*\/?>/gi, "\n\n---\n\n");
|
|
196
|
+
let markdown = stripTags(source).split("\n").map((line) => line.replace(/[ \t]+$/g, "")).join("\n").replace(/\n{3,}/g, "\n\n").trim();
|
|
197
|
+
if (options.includeMetadata !== false) {
|
|
198
|
+
const metadata = [];
|
|
199
|
+
if (title && !markdown.startsWith("# ")) {
|
|
200
|
+
metadata.push(`# ${title}`);
|
|
201
|
+
}
|
|
202
|
+
if (options.sourcePath) {
|
|
203
|
+
metadata.push(`Source: ${options.sourcePath}`);
|
|
204
|
+
}
|
|
205
|
+
if (metadata.length) {
|
|
206
|
+
markdown = `${metadata.join("\n\n")}${markdown ? `
|
|
207
|
+
|
|
208
|
+
${markdown}` : ""}`;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return `${markdown}
|
|
212
|
+
`;
|
|
213
|
+
}
|
|
214
|
+
__name(htmlToMarkdown, "htmlToMarkdown");
|
|
215
|
+
function normalizeMarkdownRouteInput(input) {
|
|
216
|
+
if (typeof input === "string") {
|
|
217
|
+
return {
|
|
218
|
+
route: normalizeMarkdownRoute(input)
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
return {
|
|
222
|
+
...input,
|
|
223
|
+
route: normalizeMarkdownRoute(input.route)
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
__name(normalizeMarkdownRouteInput, "normalizeMarkdownRouteInput");
|
|
227
|
+
function normalizeMarkdownRoute(route) {
|
|
228
|
+
const withoutMarkdownExtension = route.toLowerCase().endsWith(".md") ? route.slice(0, -3) : route;
|
|
229
|
+
const withSlash = withoutMarkdownExtension.startsWith("/") ? withoutMarkdownExtension : `/${withoutMarkdownExtension}`;
|
|
230
|
+
const normalized = withSlash.replace(/\/+/g, "/").replace(/\/$/g, "");
|
|
231
|
+
return normalized === "" || normalized === "/index" ? "/" : normalized;
|
|
232
|
+
}
|
|
233
|
+
__name(normalizeMarkdownRoute, "normalizeMarkdownRoute");
|
|
234
|
+
function requestAcceptsMarkdown(accept) {
|
|
235
|
+
if (!accept) {
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
return accept.split(",").some((entry) => {
|
|
239
|
+
const [mediaType, ...parameters] = entry.trim().toLowerCase().split(";").map((part) => part.trim());
|
|
240
|
+
if (mediaType !== "text/markdown") {
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
243
|
+
const quality = parameters.find((parameter) => parameter.startsWith("q="));
|
|
244
|
+
return quality === void 0 || Number(quality.slice(2)) > 0;
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
__name(requestAcceptsMarkdown, "requestAcceptsMarkdown");
|
|
248
|
+
function getMarkdownAlternatePath(pathname) {
|
|
249
|
+
return pathname === "/" ? "/index.md" : `${pathname}.md`;
|
|
250
|
+
}
|
|
251
|
+
__name(getMarkdownAlternatePath, "getMarkdownAlternatePath");
|
|
252
|
+
function appendHeaderToken(headers, name, token) {
|
|
253
|
+
const current = headers.get(name);
|
|
254
|
+
if (!current) {
|
|
255
|
+
headers.set(name, token);
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
const tokens = current.split(",").map((value) => value.trim().toLowerCase());
|
|
259
|
+
if (!tokens.includes(token.toLowerCase())) {
|
|
260
|
+
headers.set(name, `${current}, ${token}`);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
__name(appendHeaderToken, "appendHeaderToken");
|
|
264
|
+
function findExposedMarkdownRoute(config, pathname) {
|
|
265
|
+
if (config.expose === true) {
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
268
|
+
return config.expose.find((route) => routeMatches(route.route, pathname)) ?? null;
|
|
269
|
+
}
|
|
270
|
+
__name(findExposedMarkdownRoute, "findExposedMarkdownRoute");
|
|
271
|
+
function routeMatches(pattern, pathname) {
|
|
272
|
+
if (pattern === pathname) {
|
|
273
|
+
return true;
|
|
274
|
+
}
|
|
275
|
+
const escaped = pattern.split("/").map((segment) => {
|
|
276
|
+
if (/^\[\.\.\.[^\]]+\]$/.test(segment)) {
|
|
277
|
+
return ".*";
|
|
278
|
+
}
|
|
279
|
+
if (/^\[[^\]]+\]$/.test(segment)) {
|
|
280
|
+
return "[^/]+";
|
|
281
|
+
}
|
|
282
|
+
return segment.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
283
|
+
}).join("/");
|
|
284
|
+
return new RegExp(`^${escaped}$`).test(pathname);
|
|
285
|
+
}
|
|
286
|
+
__name(routeMatches, "routeMatches");
|
|
287
|
+
function isHtmlResponse(response) {
|
|
288
|
+
const contentType = response.headers.get("content-type") ?? "";
|
|
289
|
+
return contentType.includes("text/html");
|
|
290
|
+
}
|
|
291
|
+
__name(isHtmlResponse, "isHtmlResponse");
|
|
292
|
+
function createMarkdownCacheHeader(cache) {
|
|
293
|
+
if (cache === false || cache <= 0) {
|
|
294
|
+
return "no-store";
|
|
295
|
+
}
|
|
296
|
+
return `public, max-age=${cache}, s-maxage=${cache}`;
|
|
297
|
+
}
|
|
298
|
+
__name(createMarkdownCacheHeader, "createMarkdownCacheHeader");
|
|
299
|
+
function extractHtmlTitle(html) {
|
|
300
|
+
const match = html.match(/<title\b[^>]*>([\s\S]*?)<\/title>/i);
|
|
301
|
+
return match ? decodeHtml(stripTags(match[1])).trim() : void 0;
|
|
302
|
+
}
|
|
303
|
+
__name(extractHtmlTitle, "extractHtmlTitle");
|
|
304
|
+
function extractHtmlBody(html) {
|
|
305
|
+
const rootMatch = html.match(
|
|
306
|
+
/<div\b[^>]*id=["']root["'][^>]*>([\s\S]*?)<\/div>\s*(?:<script|<\/body>|$)/i
|
|
307
|
+
);
|
|
308
|
+
const bodyMatch = html.match(/<body\b[^>]*>([\s\S]*?)<\/body>/i);
|
|
309
|
+
const body = rootMatch ? rootMatch[1] : bodyMatch ? bodyMatch[1] : html;
|
|
310
|
+
return extractFirstElementContent(body, ["main", "article"]) ?? body;
|
|
311
|
+
}
|
|
312
|
+
__name(extractHtmlBody, "extractHtmlBody");
|
|
313
|
+
function extractFirstElementContent(html, tagNames) {
|
|
314
|
+
for (const tagName of tagNames) {
|
|
315
|
+
const match = html.match(new RegExp(`<${tagName}\\b[^>]*>([\\s\\S]*?)<\\/${tagName}>`, "i"));
|
|
316
|
+
if (match) {
|
|
317
|
+
return match[1];
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
return void 0;
|
|
321
|
+
}
|
|
322
|
+
__name(extractFirstElementContent, "extractFirstElementContent");
|
|
323
|
+
function toInlineMarkdown(html) {
|
|
324
|
+
let source = html.replace(/<a\b[^>]*href=["']([^"']+)["'][^>]*>([\s\S]*?)<\/a>/gi, (_, href, text) => {
|
|
325
|
+
const label = toInlineMarkdown(text).trim() || href;
|
|
326
|
+
return `[${label}](${decodeHtml(href)})`;
|
|
327
|
+
}).replace(
|
|
328
|
+
/<img\b[^>]*src=["']([^"']+)["'][^>]*alt=["']([^"']*)["'][^>]*\/?>/gi,
|
|
329
|
+
(_, src, alt) => {
|
|
330
|
+
return `})`;
|
|
331
|
+
}
|
|
332
|
+
).replace(/<strong\b[^>]*>([\s\S]*?)<\/strong>/gi, (_, content) => {
|
|
333
|
+
return `**${toInlineMarkdown(content).trim()}**`;
|
|
334
|
+
}).replace(/<b\b[^>]*>([\s\S]*?)<\/b>/gi, (_, content) => {
|
|
335
|
+
return `**${toInlineMarkdown(content).trim()}**`;
|
|
336
|
+
}).replace(/<em\b[^>]*>([\s\S]*?)<\/em>/gi, (_, content) => {
|
|
337
|
+
return `_${toInlineMarkdown(content).trim()}_`;
|
|
338
|
+
}).replace(/<i\b[^>]*>([\s\S]*?)<\/i>/gi, (_, content) => {
|
|
339
|
+
return `_${toInlineMarkdown(content).trim()}_`;
|
|
340
|
+
}).replace(/<code\b[^>]*>([\s\S]*?)<\/code>/gi, (_, content) => {
|
|
341
|
+
return `\`${decodeHtml(stripTags(content)).trim()}\``;
|
|
342
|
+
}).replace(/<br\s*\/?>/gi, "\n");
|
|
343
|
+
source = stripTags(source);
|
|
344
|
+
return decodeHtml(source).replace(/\s+/g, " ");
|
|
345
|
+
}
|
|
346
|
+
__name(toInlineMarkdown, "toInlineMarkdown");
|
|
347
|
+
function stripTags(input) {
|
|
348
|
+
return input.replace(/<[^>]+>/g, "");
|
|
349
|
+
}
|
|
350
|
+
__name(stripTags, "stripTags");
|
|
351
|
+
function decodeHtml(input) {
|
|
352
|
+
return input.replace(/ /g, " ").replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, '"').replace(/'/g, "'").replace(/&#x([0-9a-f]+);/gi, (_, code) => String.fromCodePoint(Number.parseInt(code, 16))).replace(/&#(\d+);/g, (_, code) => String.fromCodePoint(Number.parseInt(code, 10)));
|
|
353
|
+
}
|
|
354
|
+
__name(decodeHtml, "decodeHtml");
|
|
355
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
356
|
+
0 && (module.exports = {
|
|
357
|
+
applyMarkdownNegotiationHeaders,
|
|
358
|
+
createMarkdownMirrorResponse,
|
|
359
|
+
htmlToMarkdown,
|
|
360
|
+
requestAcceptsMarkdown,
|
|
361
|
+
resolveMarkdownConfig,
|
|
362
|
+
resolveMarkdownMirrorTarget
|
|
363
|
+
});
|
|
364
|
+
//# sourceMappingURL=markdown.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/markdown.ts"],"sourcesContent":["export type FarmMarkdownRouteInput =\n | string\n | {\n route: string;\n title?: string;\n cache?: number | false;\n };\n\nexport interface FarmMarkdownUserConfig {\n /**\n * Enable generated markdown representations for React pages.\n * @default true\n */\n enabled?: boolean;\n /**\n * Routes that may expose generated markdown. Every page is exposed by default.\n */\n expose?: boolean | FarmMarkdownRouteInput[];\n /** @deprecated Use `expose`. */\n routes?: FarmMarkdownRouteInput[];\n cache?: number | false;\n includeMetadata?: boolean;\n}\n\nexport interface FarmMarkdownResolvedRoute {\n route: string;\n title?: string;\n cache?: number | false;\n}\n\nexport interface FarmMarkdownResolvedConfig {\n enabled: boolean;\n expose: true | FarmMarkdownResolvedRoute[];\n cache: number | false;\n includeMetadata: boolean;\n}\n\nexport interface FarmMarkdownMirrorTarget {\n pathname: string;\n route: FarmMarkdownResolvedRoute | null;\n}\n\nexport interface ResolveMarkdownMirrorTargetOptions {\n accept?: string | null;\n}\n\nexport interface CreateMarkdownMirrorResponseOptions {\n request: Request;\n config?: FarmMarkdownResolvedConfig;\n routeExists?: (pathname: string) => boolean;\n renderPage: (request: Request) => Response | Promise<Response>;\n}\n\nexport interface ApplyMarkdownNegotiationHeadersOptions {\n config?: FarmMarkdownResolvedConfig;\n pathname: string;\n}\n\nexport function resolveMarkdownConfig(\n config: FarmMarkdownUserConfig | boolean | undefined,\n): FarmMarkdownResolvedConfig {\n if (config === false) {\n return {\n enabled: false,\n expose: [],\n cache: false,\n includeMetadata: true,\n };\n }\n\n if (config === true || config === undefined) {\n return {\n enabled: true,\n expose: true,\n cache: false,\n includeMetadata: true,\n };\n }\n\n const exposeInput = config.expose ?? config.routes ?? true;\n const expose =\n exposeInput === true\n ? true\n : Array.isArray(exposeInput)\n ? exposeInput.map(normalizeMarkdownRouteInput)\n : [];\n\n return {\n enabled: config.enabled !== false && (expose === true || expose.length > 0),\n expose,\n cache: config.cache ?? false,\n includeMetadata: config.includeMetadata ?? true,\n };\n}\n\nexport function resolveMarkdownMirrorTarget(\n config: FarmMarkdownResolvedConfig | undefined,\n pathname: string,\n options: ResolveMarkdownMirrorTargetOptions = {},\n): FarmMarkdownMirrorTarget | null {\n const hasMarkdownExtension = pathname.toLowerCase().endsWith(\".md\");\n if (!config?.enabled || (!hasMarkdownExtension && !requestAcceptsMarkdown(options.accept))) {\n return null;\n }\n\n const targetPathname = normalizeMarkdownRoute(\n hasMarkdownExtension ? pathname.slice(0, -\".md\".length) || \"/\" : pathname,\n );\n const route = findExposedMarkdownRoute(config, targetPathname);\n if (!route && config.expose !== true) {\n return null;\n }\n\n return {\n pathname: targetPathname,\n route,\n };\n}\n\nexport async function createMarkdownMirrorResponse(\n options: CreateMarkdownMirrorResponseOptions,\n): Promise<Response | null> {\n if (options.request.method !== \"GET\" && options.request.method !== \"HEAD\") {\n return null;\n }\n\n const requestUrl = new URL(options.request.url);\n const hasMarkdownExtension = requestUrl.pathname.toLowerCase().endsWith(\".md\");\n const target = resolveMarkdownMirrorTarget(options.config, requestUrl.pathname, {\n accept: options.request.headers.get(\"accept\"),\n });\n if (!target) {\n return null;\n }\n\n if (options.routeExists && !options.routeExists(target.pathname)) {\n return null;\n }\n\n const pageUrl = new URL(options.request.url);\n pageUrl.pathname = target.pathname;\n const headers = new Headers(options.request.headers);\n headers.set(\"accept\", \"text/html\");\n\n const pageResponse = await options.renderPage(\n new Request(pageUrl, {\n method: \"GET\",\n headers,\n }),\n );\n\n if (!isHtmlResponse(pageResponse)) {\n return null;\n }\n\n const html = await pageResponse.text();\n const markdown = htmlToMarkdown(html, {\n title: target.route?.title,\n includeMetadata: options.config?.includeMetadata ?? true,\n sourcePath: target.pathname,\n });\n const headersOut = new Headers({\n \"Content-Type\": \"text/markdown; charset=utf-8\",\n \"Content-Location\": target.pathname === \"/\" ? \"/index.md\" : `${target.pathname}.md`,\n \"X-Farm-Markdown-Route\": target.pathname,\n });\n if (!hasMarkdownExtension) {\n headersOut.set(\"Vary\", \"Accept\");\n }\n const cache = target.route?.cache ?? options.config?.cache ?? false;\n headersOut.set(\"Cache-Control\", createMarkdownCacheHeader(cache));\n\n return new Response(options.request.method === \"HEAD\" ? null : markdown, {\n status: pageResponse.status,\n headers: headersOut,\n });\n}\n\nexport function applyMarkdownNegotiationHeaders(\n response: Response,\n options: ApplyMarkdownNegotiationHeadersOptions,\n): Response {\n if (!isHtmlResponse(response)) {\n return response;\n }\n\n const target = resolveMarkdownMirrorTarget(options.config, options.pathname, {\n accept: \"text/markdown\",\n });\n if (!target) {\n return response;\n }\n\n const alternatePath = getMarkdownAlternatePath(target.pathname);\n const headers = new Headers(response.headers);\n appendHeaderToken(headers, \"Vary\", \"Accept\");\n headers.append(\"Link\", `<${alternatePath}>; rel=\"alternate\"; type=\"text/markdown\"`);\n\n return new Response(response.body, {\n status: response.status,\n statusText: response.statusText,\n headers,\n });\n}\n\nexport function htmlToMarkdown(\n html: string,\n options: {\n title?: string;\n sourcePath?: string;\n includeMetadata?: boolean;\n } = {},\n): string {\n const title = options.title ?? extractHtmlTitle(html);\n let source = extractHtmlBody(html)\n .replace(/<script\\b[^>]*>[\\s\\S]*?<\\/script>/gi, \"\")\n .replace(/<style\\b[^>]*>[\\s\\S]*?<\\/style>/gi, \"\")\n .replace(/<noscript\\b[^>]*>[\\s\\S]*?<\\/noscript>/gi, \"\")\n .replace(/<!--[\\s\\S]*?-->/g, \"\");\n\n source = source.replace(/<pre\\b[^>]*><code\\b[^>]*>([\\s\\S]*?)<\\/code><\\/pre>/gi, (_, code) => {\n return `\\n\\n\\`\\`\\`\\n${decodeHtml(stripTags(code)).trim()}\\n\\`\\`\\`\\n\\n`;\n });\n source = source.replace(/<pre\\b[^>]*>([\\s\\S]*?)<\\/pre>/gi, (_, code) => {\n return `\\n\\n\\`\\`\\`\\n${decodeHtml(stripTags(code)).trim()}\\n\\`\\`\\`\\n\\n`;\n });\n source = source.replace(/<h([1-6])\\b[^>]*>([\\s\\S]*?)<\\/h\\1>/gi, (_, level, content) => {\n return `\\n\\n${\"#\".repeat(Number(level))} ${toInlineMarkdown(content).trim()}\\n\\n`;\n });\n source = source.replace(/<p\\b[^>]*>([\\s\\S]*?)<\\/p>/gi, (_, content) => {\n return `\\n\\n${toInlineMarkdown(content).trim()}\\n\\n`;\n });\n source = source.replace(/<blockquote\\b[^>]*>([\\s\\S]*?)<\\/blockquote>/gi, (_, content) => {\n const quote = htmlToMarkdown(content, { includeMetadata: false })\n .split(\"\\n\")\n .filter((line) => line.trim().length > 0)\n .map((line) => `> ${line}`)\n .join(\"\\n\");\n return `\\n\\n${quote}\\n\\n`;\n });\n source = source.replace(/<li\\b[^>]*>([\\s\\S]*?)<\\/li>/gi, (_, content) => {\n return `\\n- ${toInlineMarkdown(content).trim()}`;\n });\n source = source\n .replace(/<\\/?(ul|ol|main|section|article|header|footer|nav|aside|div)\\b[^>]*>/gi, \"\\n\")\n .replace(/<br\\s*\\/?>/gi, \"\\n\")\n .replace(/<hr\\s*\\/?>/gi, \"\\n\\n---\\n\\n\");\n\n let markdown = stripTags(source)\n .split(\"\\n\")\n .map((line) => line.replace(/[ \\t]+$/g, \"\"))\n .join(\"\\n\")\n .replace(/\\n{3,}/g, \"\\n\\n\")\n .trim();\n\n if (options.includeMetadata !== false) {\n const metadata: string[] = [];\n if (title && !markdown.startsWith(\"# \")) {\n metadata.push(`# ${title}`);\n }\n if (options.sourcePath) {\n metadata.push(`Source: ${options.sourcePath}`);\n }\n if (metadata.length) {\n markdown = `${metadata.join(\"\\n\\n\")}${markdown ? `\\n\\n${markdown}` : \"\"}`;\n }\n }\n\n return `${markdown}\\n`;\n}\n\nfunction normalizeMarkdownRouteInput(input: FarmMarkdownRouteInput): FarmMarkdownResolvedRoute {\n if (typeof input === \"string\") {\n return {\n route: normalizeMarkdownRoute(input),\n };\n }\n\n return {\n ...input,\n route: normalizeMarkdownRoute(input.route),\n };\n}\n\nfunction normalizeMarkdownRoute(route: string): string {\n const withoutMarkdownExtension = route.toLowerCase().endsWith(\".md\") ? route.slice(0, -3) : route;\n const withSlash = withoutMarkdownExtension.startsWith(\"/\")\n ? withoutMarkdownExtension\n : `/${withoutMarkdownExtension}`;\n const normalized = withSlash.replace(/\\/+/g, \"/\").replace(/\\/$/g, \"\");\n return normalized === \"\" || normalized === \"/index\" ? \"/\" : normalized;\n}\n\nexport function requestAcceptsMarkdown(accept: string | null | undefined): boolean {\n if (!accept) {\n return false;\n }\n\n return accept.split(\",\").some((entry) => {\n const [mediaType, ...parameters] = entry\n .trim()\n .toLowerCase()\n .split(\";\")\n .map((part) => part.trim());\n if (mediaType !== \"text/markdown\") {\n return false;\n }\n\n const quality = parameters.find((parameter) => parameter.startsWith(\"q=\"));\n return quality === undefined || Number(quality.slice(2)) > 0;\n });\n}\n\nfunction getMarkdownAlternatePath(pathname: string): string {\n return pathname === \"/\" ? \"/index.md\" : `${pathname}.md`;\n}\n\nfunction appendHeaderToken(headers: Headers, name: string, token: string): void {\n const current = headers.get(name);\n if (!current) {\n headers.set(name, token);\n return;\n }\n\n const tokens = current.split(\",\").map((value) => value.trim().toLowerCase());\n if (!tokens.includes(token.toLowerCase())) {\n headers.set(name, `${current}, ${token}`);\n }\n}\n\nfunction findExposedMarkdownRoute(\n config: FarmMarkdownResolvedConfig,\n pathname: string,\n): FarmMarkdownResolvedRoute | null {\n if (config.expose === true) {\n return null;\n }\n\n return config.expose.find((route) => routeMatches(route.route, pathname)) ?? null;\n}\n\nfunction routeMatches(pattern: string, pathname: string): boolean {\n if (pattern === pathname) {\n return true;\n }\n\n const escaped = pattern\n .split(\"/\")\n .map((segment) => {\n if (/^\\[\\.\\.\\.[^\\]]+\\]$/.test(segment)) {\n return \".*\";\n }\n if (/^\\[[^\\]]+\\]$/.test(segment)) {\n return \"[^/]+\";\n }\n return segment.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n })\n .join(\"/\");\n\n return new RegExp(`^${escaped}$`).test(pathname);\n}\n\nfunction isHtmlResponse(response: Response): boolean {\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n return contentType.includes(\"text/html\");\n}\n\nfunction createMarkdownCacheHeader(cache: number | false): string {\n if (cache === false || cache <= 0) {\n return \"no-store\";\n }\n\n return `public, max-age=${cache}, s-maxage=${cache}`;\n}\n\nfunction extractHtmlTitle(html: string): string | undefined {\n const match = html.match(/<title\\b[^>]*>([\\s\\S]*?)<\\/title>/i);\n return match ? decodeHtml(stripTags(match[1])).trim() : undefined;\n}\n\nfunction extractHtmlBody(html: string): string {\n const rootMatch = html.match(\n /<div\\b[^>]*id=[\"']root[\"'][^>]*>([\\s\\S]*?)<\\/div>\\s*(?:<script|<\\/body>|$)/i,\n );\n const bodyMatch = html.match(/<body\\b[^>]*>([\\s\\S]*?)<\\/body>/i);\n const body = rootMatch ? rootMatch[1] : bodyMatch ? bodyMatch[1] : html;\n return extractFirstElementContent(body, [\"main\", \"article\"]) ?? body;\n}\n\nfunction extractFirstElementContent(html: string, tagNames: string[]): string | undefined {\n for (const tagName of tagNames) {\n const match = html.match(new RegExp(`<${tagName}\\\\b[^>]*>([\\\\s\\\\S]*?)<\\\\/${tagName}>`, \"i\"));\n if (match) {\n return match[1];\n }\n }\n\n return undefined;\n}\n\nfunction toInlineMarkdown(html: string): string {\n let source = html\n .replace(/<a\\b[^>]*href=[\"']([^\"']+)[\"'][^>]*>([\\s\\S]*?)<\\/a>/gi, (_, href, text) => {\n const label: string = toInlineMarkdown(text).trim() || href;\n return `[${label}](${decodeHtml(href)})`;\n })\n .replace(\n /<img\\b[^>]*src=[\"']([^\"']+)[\"'][^>]*alt=[\"']([^\"']*)[\"'][^>]*\\/?>/gi,\n (_, src, alt) => {\n return `})`;\n },\n )\n .replace(/<strong\\b[^>]*>([\\s\\S]*?)<\\/strong>/gi, (_, content) => {\n return `**${toInlineMarkdown(content).trim()}**`;\n })\n .replace(/<b\\b[^>]*>([\\s\\S]*?)<\\/b>/gi, (_, content) => {\n return `**${toInlineMarkdown(content).trim()}**`;\n })\n .replace(/<em\\b[^>]*>([\\s\\S]*?)<\\/em>/gi, (_, content) => {\n return `_${toInlineMarkdown(content).trim()}_`;\n })\n .replace(/<i\\b[^>]*>([\\s\\S]*?)<\\/i>/gi, (_, content) => {\n return `_${toInlineMarkdown(content).trim()}_`;\n })\n .replace(/<code\\b[^>]*>([\\s\\S]*?)<\\/code>/gi, (_, content) => {\n return `\\`${decodeHtml(stripTags(content)).trim()}\\``;\n })\n .replace(/<br\\s*\\/?>/gi, \"\\n\");\n\n source = stripTags(source);\n return decodeHtml(source).replace(/\\s+/g, \" \");\n}\n\nfunction stripTags(input: string): string {\n return input.replace(/<[^>]+>/g, \"\");\n}\n\nfunction decodeHtml(input: string): string {\n return input\n .replace(/ /g, \" \")\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/"/g, '\"')\n .replace(/'/g, \"'\")\n .replace(/&#x([0-9a-f]+);/gi, (_, code) => String.fromCodePoint(Number.parseInt(code, 16)))\n .replace(/&#(\\d+);/g, (_, code) => String.fromCodePoint(Number.parseInt(code, 10)));\n}\n"],"mappings":"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","names":[]}
|