@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 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/query/params.ts"],"sourcesContent":["import type { Parser } from \"./parsers\";\n\nexport type RouteParamsInput =\n | Record<string, string | undefined>\n | URLSearchParams\n | Promise<Record<string, string | undefined> | URLSearchParams>;\n\nfunction normalizeParams(input: Record<string, string | undefined> | URLSearchParams) {\n if (input instanceof URLSearchParams) {\n const params: Record<string, string | undefined> = {};\n input.forEach((value, key) => {\n params[key] = value;\n });\n return params;\n }\n return input;\n}\n\nexport async function loadRouteParams<T extends Record<string, Parser<any>>>(\n input: RouteParamsInput,\n parsers: T,\n options: { strict?: boolean } = {},\n): Promise<{ [K in keyof T]: ReturnType<T[K][\"parse\"]> }> {\n const resolved = await Promise.resolve(input);\n const params = normalizeParams(resolved);\n const result = {} as { [K in keyof T]: ReturnType<T[K][\"parse\"]> };\n\n for (const [key, parser] of Object.entries(parsers)) {\n const raw = params[key] ?? \"\";\n const parsed = parser.parse(raw);\n if (parsed === null && options.strict) {\n throw new Error(`Failed to parse route param \"${key}\" with value \"${raw}\"`);\n }\n result[key as keyof T] = parsed as ReturnType<T[typeof key][\"parse\"]>;\n }\n\n return result;\n}\n\nexport function parseRouteParams<T extends Record<string, Parser<any>>>(\n input: Record<string, string | undefined> | URLSearchParams,\n parsers: T,\n options: { strict?: boolean } = {},\n): { [K in keyof T]: ReturnType<T[K][\"parse\"]> } {\n const params = normalizeParams(input);\n const result = {} as { [K in keyof T]: ReturnType<T[K][\"parse\"]> };\n\n for (const [key, parser] of Object.entries(parsers)) {\n const raw = params[key] ?? \"\";\n const parsed = parser.parse(raw);\n if (parsed === null && options.strict) {\n throw new Error(`Failed to parse route param \"${key}\" with value \"${raw}\"`);\n }\n result[key as keyof T] = parsed as ReturnType<T[typeof key][\"parse\"]>;\n }\n\n return result;\n}\n"],"mappings":";;;;;AAOA,SAAS,gBAAgB,OAA6D;AACpF,MAAI,iBAAiB,iBAAiB;AACpC,UAAM,SAA6C,CAAC;AACpD,UAAM,QAAQ,CAAC,OAAO,QAAQ;AAC5B,aAAO,GAAG,IAAI;AAAA,IAChB,CAAC;AACD,WAAO;AAAA,EACT;AACA,SAAO;AACT;AATS;AAWT,eAAsB,gBACpB,OACA,SACA,UAAgC,CAAC,GACuB;AACxD,QAAM,WAAW,MAAM,QAAQ,QAAQ,KAAK;AAC5C,QAAM,SAAS,gBAAgB,QAAQ;AACvC,QAAM,SAAS,CAAC;AAEhB,aAAW,CAAC,KAAK,MAAM,KAAK,OAAO,QAAQ,OAAO,GAAG;AACnD,UAAM,MAAM,OAAO,GAAG,KAAK;AAC3B,UAAM,SAAS,OAAO,MAAM,GAAG;AAC/B,QAAI,WAAW,QAAQ,QAAQ,QAAQ;AACrC,YAAM,IAAI,MAAM,gCAAgC,GAAG,iBAAiB,GAAG,GAAG;AAAA,IAC5E;AACA,WAAO,GAAc,IAAI;AAAA,EAC3B;AAEA,SAAO;AACT;AAnBsB;AAqBf,SAAS,iBACd,OACA,SACA,UAAgC,CAAC,GACc;AAC/C,QAAM,SAAS,gBAAgB,KAAK;AACpC,QAAM,SAAS,CAAC;AAEhB,aAAW,CAAC,KAAK,MAAM,KAAK,OAAO,QAAQ,OAAO,GAAG;AACnD,UAAM,MAAM,OAAO,GAAG,KAAK;AAC3B,UAAM,SAAS,OAAO,MAAM,GAAG;AAC/B,QAAI,WAAW,QAAQ,QAAQ,QAAQ;AACrC,YAAM,IAAI,MAAM,gCAAgC,GAAG,iBAAiB,GAAG,GAAG;AAAA,IAC5E;AACA,WAAO,GAAc,IAAI;AAAA,EAC3B;AAEA,SAAO;AACT;AAlBgB;","names":[]}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__name
|
|
3
|
+
} from "./chunk-CGILA3WO.mjs";
|
|
4
|
+
|
|
5
|
+
// src/auth-config.ts
|
|
6
|
+
import { createRequire } from "module";
|
|
7
|
+
import path from "path";
|
|
8
|
+
import { pathToFileURL } from "url";
|
|
9
|
+
function resolveFarmAuthConfig(input) {
|
|
10
|
+
const config = input === true ? {} : input && typeof input === "object" ? input : {};
|
|
11
|
+
const passwordConfig = typeof config.emailAndPassword === "object" ? config.emailAndPassword : {};
|
|
12
|
+
const resolved = {
|
|
13
|
+
enabled: input !== void 0 && input !== false && config.enabled !== false,
|
|
14
|
+
appName: config.appName,
|
|
15
|
+
basePath: normalizeBasePath(config.basePath),
|
|
16
|
+
emailAndPassword: {
|
|
17
|
+
enabled: config.emailAndPassword !== false,
|
|
18
|
+
requireEmailVerification: passwordConfig.requireEmailVerification ?? false,
|
|
19
|
+
minPasswordLength: passwordConfig.minPasswordLength ?? 8,
|
|
20
|
+
maxPasswordLength: passwordConfig.maxPasswordLength ?? 128
|
|
21
|
+
},
|
|
22
|
+
session: {
|
|
23
|
+
expiresIn: config.session?.expiresIn ?? 60 * 60 * 24 * 7,
|
|
24
|
+
updateAge: config.session?.updateAge ?? 60 * 60 * 24
|
|
25
|
+
},
|
|
26
|
+
database: {
|
|
27
|
+
url: config.database?.url,
|
|
28
|
+
path: config.database?.path || ".farm/auth.sqlite",
|
|
29
|
+
migrateInDevelopment: config.database?.migrateInDevelopment ?? true
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
validateFarmAuthConfig(resolved);
|
|
33
|
+
return resolved;
|
|
34
|
+
}
|
|
35
|
+
__name(resolveFarmAuthConfig, "resolveFarmAuthConfig");
|
|
36
|
+
async function resolveFarmAuthIntegration(config, options) {
|
|
37
|
+
if (!config.enabled) return void 0;
|
|
38
|
+
const root = path.resolve(options.root);
|
|
39
|
+
let modulePath;
|
|
40
|
+
try {
|
|
41
|
+
const resolveFromApp = createRequire(path.join(root, "package.json"));
|
|
42
|
+
modulePath = resolveFromApp.resolve("@farm.js/auth/internal");
|
|
43
|
+
} catch {
|
|
44
|
+
throw new Error(
|
|
45
|
+
"The `auth` config requires @farm.js/auth. Install it with `pnpm add @farm.js/auth` and try again."
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
const runtime = await import(
|
|
49
|
+
/* @vite-ignore */
|
|
50
|
+
pathToFileURL(modulePath).href
|
|
51
|
+
);
|
|
52
|
+
if (typeof runtime.createFarmAuthIntegration !== "function") {
|
|
53
|
+
throw new Error(
|
|
54
|
+
"The installed @farm.js/auth package is incompatible with this version of @farm.js/core."
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
return runtime.createFarmAuthIntegration(config, {
|
|
58
|
+
...options,
|
|
59
|
+
root
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
__name(resolveFarmAuthIntegration, "resolveFarmAuthIntegration");
|
|
63
|
+
function normalizeBasePath(value) {
|
|
64
|
+
const route = (value || "/api/auth").trim();
|
|
65
|
+
const withLeadingSlash = route.startsWith("/") ? route : `/${route}`;
|
|
66
|
+
const normalized = withLeadingSlash.replace(/\/+/g, "/").replace(/\/+$/, "");
|
|
67
|
+
return normalized || "/api/auth";
|
|
68
|
+
}
|
|
69
|
+
__name(normalizeBasePath, "normalizeBasePath");
|
|
70
|
+
function validateFarmAuthConfig(config) {
|
|
71
|
+
const { minPasswordLength, maxPasswordLength } = config.emailAndPassword;
|
|
72
|
+
if (!Number.isInteger(minPasswordLength) || minPasswordLength < 1) {
|
|
73
|
+
throw new Error("auth.emailAndPassword.minPasswordLength must be a positive integer.");
|
|
74
|
+
}
|
|
75
|
+
if (!Number.isInteger(maxPasswordLength) || maxPasswordLength < minPasswordLength) {
|
|
76
|
+
throw new Error(
|
|
77
|
+
"auth.emailAndPassword.maxPasswordLength must be an integer greater than or equal to minPasswordLength."
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
if (!Number.isInteger(config.session.expiresIn) || config.session.expiresIn < 1) {
|
|
81
|
+
throw new Error("auth.session.expiresIn must be a positive integer.");
|
|
82
|
+
}
|
|
83
|
+
if (!Number.isInteger(config.session.updateAge) || config.session.updateAge < 0) {
|
|
84
|
+
throw new Error("auth.session.updateAge must be a non-negative integer.");
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
__name(validateFarmAuthConfig, "validateFarmAuthConfig");
|
|
88
|
+
|
|
89
|
+
export {
|
|
90
|
+
resolveFarmAuthConfig,
|
|
91
|
+
resolveFarmAuthIntegration
|
|
92
|
+
};
|
|
93
|
+
//# sourceMappingURL=chunk-I4CUBGVF.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/auth-config.ts"],"sourcesContent":["import { createRequire } from \"node:module\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { FarmIntegration } from \"./integrations\";\n\nexport interface FarmAuthEmailAndPasswordConfig {\n /** Require a verified email before creating a session. @default false */\n requireEmailVerification?: boolean;\n /** Smallest accepted password length. @default 8 */\n minPasswordLength?: number;\n /** Largest accepted password length. @default 128 */\n maxPasswordLength?: number;\n}\n\nexport interface FarmAuthSessionConfig {\n /** Session lifetime in seconds. @default 604800 */\n expiresIn?: number;\n /** Session refresh interval in seconds. @default 86400 */\n updateAge?: number;\n}\n\nexport interface FarmAuthDatabaseConfig {\n /**\n * Postgres connection string. Defaults to DATABASE_URL.\n * Local development falls back to SQLite when no URL is present.\n */\n url?: string;\n /** Local SQLite path. @default \".farm/auth.sqlite\" */\n path?: string;\n /** Automatically update the auth schema in development. @default true */\n migrateInDevelopment?: boolean;\n}\n\nexport interface FarmAuthConfig {\n /** Set false to disable auth without removing its configuration. @default true */\n enabled?: boolean;\n /** Display name used by authentication emails and metadata. */\n appName?: string;\n /** Route prefix for the auth endpoints. @default \"/api/auth\" */\n basePath?: string;\n /**\n * Email/password authentication. It is enabled by default; set false to\n * disable it when adding another sign-in method.\n */\n emailAndPassword?: boolean | FarmAuthEmailAndPasswordConfig;\n session?: FarmAuthSessionConfig;\n database?: FarmAuthDatabaseConfig;\n}\n\nexport type FarmAuthUserConfig = boolean | FarmAuthConfig;\n\nexport interface ResolvedFarmAuthConfig {\n enabled: boolean;\n appName?: string;\n basePath: string;\n emailAndPassword: {\n enabled: boolean;\n requireEmailVerification: boolean;\n minPasswordLength: number;\n maxPasswordLength: number;\n };\n session: {\n expiresIn: number;\n updateAge: number;\n };\n database: {\n url?: string;\n path: string;\n migrateInDevelopment: boolean;\n };\n}\n\ninterface FarmAuthRuntimeModule {\n createFarmAuthIntegration(\n config: ResolvedFarmAuthConfig,\n options: {\n root: string;\n mode: \"development\" | \"production\";\n },\n ): FarmIntegration;\n}\n\nexport function resolveFarmAuthConfig(\n input: FarmAuthUserConfig | undefined,\n): ResolvedFarmAuthConfig {\n const config = input === true ? {} : input && typeof input === \"object\" ? input : {};\n const passwordConfig = typeof config.emailAndPassword === \"object\" ? config.emailAndPassword : {};\n\n const resolved: ResolvedFarmAuthConfig = {\n enabled: input !== undefined && input !== false && config.enabled !== false,\n appName: config.appName,\n basePath: normalizeBasePath(config.basePath),\n emailAndPassword: {\n enabled: config.emailAndPassword !== false,\n requireEmailVerification: passwordConfig.requireEmailVerification ?? false,\n minPasswordLength: passwordConfig.minPasswordLength ?? 8,\n maxPasswordLength: passwordConfig.maxPasswordLength ?? 128,\n },\n session: {\n expiresIn: config.session?.expiresIn ?? 60 * 60 * 24 * 7,\n updateAge: config.session?.updateAge ?? 60 * 60 * 24,\n },\n database: {\n url: config.database?.url,\n path: config.database?.path || \".farm/auth.sqlite\",\n migrateInDevelopment: config.database?.migrateInDevelopment ?? true,\n },\n };\n\n validateFarmAuthConfig(resolved);\n return resolved;\n}\n\nexport async function resolveFarmAuthIntegration(\n config: ResolvedFarmAuthConfig,\n options: {\n root: string;\n mode: \"development\" | \"production\";\n },\n): Promise<FarmIntegration | undefined> {\n if (!config.enabled) return undefined;\n\n const root = path.resolve(options.root);\n let modulePath: string;\n try {\n const resolveFromApp = createRequire(path.join(root, \"package.json\"));\n modulePath = resolveFromApp.resolve(\"@farm.js/auth/internal\");\n } catch {\n throw new Error(\n \"The `auth` config requires @farm.js/auth. Install it with `pnpm add @farm.js/auth` and try again.\",\n );\n }\n\n const runtime = (await import(\n /* @vite-ignore */ pathToFileURL(modulePath).href\n )) as FarmAuthRuntimeModule;\n if (typeof runtime.createFarmAuthIntegration !== \"function\") {\n throw new Error(\n \"The installed @farm.js/auth package is incompatible with this version of @farm.js/core.\",\n );\n }\n\n return runtime.createFarmAuthIntegration(config, {\n ...options,\n root,\n });\n}\n\nfunction normalizeBasePath(value: string | undefined): string {\n const route = (value || \"/api/auth\").trim();\n const withLeadingSlash = route.startsWith(\"/\") ? route : `/${route}`;\n const normalized = withLeadingSlash.replace(/\\/+/g, \"/\").replace(/\\/+$/, \"\");\n return normalized || \"/api/auth\";\n}\n\nfunction validateFarmAuthConfig(config: ResolvedFarmAuthConfig): void {\n const { minPasswordLength, maxPasswordLength } = config.emailAndPassword;\n if (!Number.isInteger(minPasswordLength) || minPasswordLength < 1) {\n throw new Error(\"auth.emailAndPassword.minPasswordLength must be a positive integer.\");\n }\n if (!Number.isInteger(maxPasswordLength) || maxPasswordLength < minPasswordLength) {\n throw new Error(\n \"auth.emailAndPassword.maxPasswordLength must be an integer greater than or equal to minPasswordLength.\",\n );\n }\n if (!Number.isInteger(config.session.expiresIn) || config.session.expiresIn < 1) {\n throw new Error(\"auth.session.expiresIn must be a positive integer.\");\n }\n if (!Number.isInteger(config.session.updateAge) || config.session.updateAge < 0) {\n throw new Error(\"auth.session.updateAge must be a non-negative integer.\");\n }\n}\n"],"mappings":";;;;;AAAA,SAAS,qBAAqB;AAC9B,OAAO,UAAU;AACjB,SAAS,qBAAqB;AAgFvB,SAAS,sBACd,OACwB;AACxB,QAAM,SAAS,UAAU,OAAO,CAAC,IAAI,SAAS,OAAO,UAAU,WAAW,QAAQ,CAAC;AACnF,QAAM,iBAAiB,OAAO,OAAO,qBAAqB,WAAW,OAAO,mBAAmB,CAAC;AAEhG,QAAM,WAAmC;AAAA,IACvC,SAAS,UAAU,UAAa,UAAU,SAAS,OAAO,YAAY;AAAA,IACtE,SAAS,OAAO;AAAA,IAChB,UAAU,kBAAkB,OAAO,QAAQ;AAAA,IAC3C,kBAAkB;AAAA,MAChB,SAAS,OAAO,qBAAqB;AAAA,MACrC,0BAA0B,eAAe,4BAA4B;AAAA,MACrE,mBAAmB,eAAe,qBAAqB;AAAA,MACvD,mBAAmB,eAAe,qBAAqB;AAAA,IACzD;AAAA,IACA,SAAS;AAAA,MACP,WAAW,OAAO,SAAS,aAAa,KAAK,KAAK,KAAK;AAAA,MACvD,WAAW,OAAO,SAAS,aAAa,KAAK,KAAK;AAAA,IACpD;AAAA,IACA,UAAU;AAAA,MACR,KAAK,OAAO,UAAU;AAAA,MACtB,MAAM,OAAO,UAAU,QAAQ;AAAA,MAC/B,sBAAsB,OAAO,UAAU,wBAAwB;AAAA,IACjE;AAAA,EACF;AAEA,yBAAuB,QAAQ;AAC/B,SAAO;AACT;AA7BgB;AA+BhB,eAAsB,2BACpB,QACA,SAIsC;AACtC,MAAI,CAAC,OAAO,QAAS,QAAO;AAE5B,QAAM,OAAO,KAAK,QAAQ,QAAQ,IAAI;AACtC,MAAI;AACJ,MAAI;AACF,UAAM,iBAAiB,cAAc,KAAK,KAAK,MAAM,cAAc,CAAC;AACpE,iBAAa,eAAe,QAAQ,wBAAwB;AAAA,EAC9D,QAAQ;AACN,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,UAAW,MAAM;AAAA;AAAA,IACF,cAAc,UAAU,EAAE;AAAA;AAE/C,MAAI,OAAO,QAAQ,8BAA8B,YAAY;AAC3D,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO,QAAQ,0BAA0B,QAAQ;AAAA,IAC/C,GAAG;AAAA,IACH;AAAA,EACF,CAAC;AACH;AAjCsB;AAmCtB,SAAS,kBAAkB,OAAmC;AAC5D,QAAM,SAAS,SAAS,aAAa,KAAK;AAC1C,QAAM,mBAAmB,MAAM,WAAW,GAAG,IAAI,QAAQ,IAAI,KAAK;AAClE,QAAM,aAAa,iBAAiB,QAAQ,QAAQ,GAAG,EAAE,QAAQ,QAAQ,EAAE;AAC3E,SAAO,cAAc;AACvB;AALS;AAOT,SAAS,uBAAuB,QAAsC;AACpE,QAAM,EAAE,mBAAmB,kBAAkB,IAAI,OAAO;AACxD,MAAI,CAAC,OAAO,UAAU,iBAAiB,KAAK,oBAAoB,GAAG;AACjE,UAAM,IAAI,MAAM,qEAAqE;AAAA,EACvF;AACA,MAAI,CAAC,OAAO,UAAU,iBAAiB,KAAK,oBAAoB,mBAAmB;AACjF,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,MAAI,CAAC,OAAO,UAAU,OAAO,QAAQ,SAAS,KAAK,OAAO,QAAQ,YAAY,GAAG;AAC/E,UAAM,IAAI,MAAM,oDAAoD;AAAA,EACtE;AACA,MAAI,CAAC,OAAO,UAAU,OAAO,QAAQ,SAAS,KAAK,OAAO,QAAQ,YAAY,GAAG;AAC/E,UAAM,IAAI,MAAM,wDAAwD;AAAA,EAC1E;AACF;AAhBS;","names":[]}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import {
|
|
2
|
+
localizeFarmHref,
|
|
3
|
+
resolveFarmLocalePath
|
|
4
|
+
} from "./chunk-44ZCFSKE.mjs";
|
|
5
|
+
import {
|
|
6
|
+
getActiveFarmI18nSnapshot
|
|
7
|
+
} from "./chunk-WZ5QFROO.mjs";
|
|
8
|
+
import {
|
|
9
|
+
__name
|
|
10
|
+
} from "./chunk-CGILA3WO.mjs";
|
|
11
|
+
|
|
12
|
+
// src/i18n/client-runtime.ts
|
|
13
|
+
import IntlMessageFormat from "intl-messageformat";
|
|
14
|
+
var listeners = /* @__PURE__ */ new Set();
|
|
15
|
+
var compiled = /* @__PURE__ */ new Map();
|
|
16
|
+
var currentSnapshot;
|
|
17
|
+
function getFarmI18nClientState() {
|
|
18
|
+
return currentSnapshot || getActiveFarmI18nSnapshot();
|
|
19
|
+
}
|
|
20
|
+
__name(getFarmI18nClientState, "getFarmI18nClientState");
|
|
21
|
+
function subscribeFarmI18n(listener) {
|
|
22
|
+
listeners.add(listener);
|
|
23
|
+
return () => listeners.delete(listener);
|
|
24
|
+
}
|
|
25
|
+
__name(subscribeFarmI18n, "subscribeFarmI18n");
|
|
26
|
+
function _hydrateFarmI18n(snapshot) {
|
|
27
|
+
if (!snapshot) return;
|
|
28
|
+
const changed = currentSnapshot?.locale !== snapshot.locale;
|
|
29
|
+
currentSnapshot = snapshot;
|
|
30
|
+
if (typeof window !== "undefined") window.__FARM_I18N__ = snapshot;
|
|
31
|
+
if (typeof document !== "undefined") {
|
|
32
|
+
document.documentElement.lang = snapshot.locale;
|
|
33
|
+
document.documentElement.dir = snapshot.direction;
|
|
34
|
+
}
|
|
35
|
+
if (changed) compiled.clear();
|
|
36
|
+
for (const listener of listeners) listener();
|
|
37
|
+
}
|
|
38
|
+
__name(_hydrateFarmI18n, "_hydrateFarmI18n");
|
|
39
|
+
var translate = /* @__PURE__ */ __name((key, values, rich = false) => {
|
|
40
|
+
const snapshot = requireSnapshot();
|
|
41
|
+
const message = snapshot.messages[key];
|
|
42
|
+
if (message === void 0) return key;
|
|
43
|
+
const cacheKey = `${snapshot.locale}\0${key}\0${message}`;
|
|
44
|
+
let formatter = compiled.get(cacheKey);
|
|
45
|
+
if (!formatter) {
|
|
46
|
+
formatter = new IntlMessageFormat(message, snapshot.locale);
|
|
47
|
+
compiled.set(cacheKey, formatter);
|
|
48
|
+
}
|
|
49
|
+
const result = formatter.format(values);
|
|
50
|
+
if (rich) return Array.isArray(result) && result.length === 1 ? result[0] : result;
|
|
51
|
+
if (Array.isArray(result) && result.some((part) => typeof part !== "string")) {
|
|
52
|
+
throw new Error(`Farm i18n message "${key}" contains rich content. Render it with t.rich().`);
|
|
53
|
+
}
|
|
54
|
+
return Array.isArray(result) ? result.join("") : String(result);
|
|
55
|
+
}, "translate");
|
|
56
|
+
var t = /* @__PURE__ */ __name(((key, values) => translate(key, values)), "t");
|
|
57
|
+
t.rich = (key, values) => translate(key, values, true);
|
|
58
|
+
t.raw = (key) => requireSnapshot().messages[key] ?? key;
|
|
59
|
+
t.has = (key) => key in requireSnapshot().messages;
|
|
60
|
+
function localizeActiveFarmHref(href, locale) {
|
|
61
|
+
const snapshot = getFarmI18nClientState();
|
|
62
|
+
if (!snapshot) return href;
|
|
63
|
+
return localizeFarmHref(href, locale || snapshot.locale, snapshot);
|
|
64
|
+
}
|
|
65
|
+
__name(localizeActiveFarmHref, "localizeActiveFarmHref");
|
|
66
|
+
function isFarmLocaleChangeHref(href) {
|
|
67
|
+
const snapshot = getFarmI18nClientState();
|
|
68
|
+
if (!snapshot || typeof window === "undefined") return false;
|
|
69
|
+
if (snapshot.routing === "none") return false;
|
|
70
|
+
const target = new URL(href, window.location.origin);
|
|
71
|
+
const match = resolveFarmLocalePath(target.pathname, snapshot);
|
|
72
|
+
const targetLocale = match.locale || snapshot.defaultLocale;
|
|
73
|
+
return targetLocale !== snapshot.locale;
|
|
74
|
+
}
|
|
75
|
+
__name(isFarmLocaleChangeHref, "isFarmLocaleChangeHref");
|
|
76
|
+
function createFarmClientTranslator() {
|
|
77
|
+
return ((key, ...args) => t(key, ...args));
|
|
78
|
+
}
|
|
79
|
+
__name(createFarmClientTranslator, "createFarmClientTranslator");
|
|
80
|
+
function requireSnapshot() {
|
|
81
|
+
const snapshot = getFarmI18nClientState();
|
|
82
|
+
if (!snapshot) {
|
|
83
|
+
throw new Error("Farm i18n is not configured or has not been hydrated.");
|
|
84
|
+
}
|
|
85
|
+
return snapshot;
|
|
86
|
+
}
|
|
87
|
+
__name(requireSnapshot, "requireSnapshot");
|
|
88
|
+
|
|
89
|
+
export {
|
|
90
|
+
getFarmI18nClientState,
|
|
91
|
+
subscribeFarmI18n,
|
|
92
|
+
_hydrateFarmI18n,
|
|
93
|
+
t,
|
|
94
|
+
localizeActiveFarmHref,
|
|
95
|
+
isFarmLocaleChangeHref,
|
|
96
|
+
createFarmClientTranslator
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=chunk-ITN462YM.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/i18n/client-runtime.ts"],"sourcesContent":["import IntlMessageFormat from \"intl-messageformat\";\nimport { getActiveFarmI18nSnapshot } from \"./bridge\";\nimport { localizeFarmHref, resolveFarmLocalePath } from \"./routing\";\nimport type {\n FarmI18nClientSnapshot,\n FarmI18nLocale,\n FarmI18nMessageArgs,\n FarmI18nMessageKey,\n FarmTranslator,\n} from \"./types\";\n\ntype Listener = () => void;\n\nconst listeners = new Set<Listener>();\nconst compiled = new Map<string, IntlMessageFormat>();\nlet currentSnapshot: FarmI18nClientSnapshot | undefined;\n\nexport function getFarmI18nClientState(): FarmI18nClientSnapshot | undefined {\n return currentSnapshot || getActiveFarmI18nSnapshot();\n}\n\nexport function subscribeFarmI18n(listener: Listener): () => void {\n listeners.add(listener);\n return () => listeners.delete(listener);\n}\n\nexport function _hydrateFarmI18n(snapshot: FarmI18nClientSnapshot | undefined): void {\n if (!snapshot) return;\n const changed = currentSnapshot?.locale !== snapshot.locale;\n currentSnapshot = snapshot;\n if (typeof window !== \"undefined\") window.__FARM_I18N__ = snapshot;\n if (typeof document !== \"undefined\") {\n document.documentElement.lang = snapshot.locale;\n document.documentElement.dir = snapshot.direction;\n }\n if (changed) compiled.clear();\n for (const listener of listeners) listener();\n}\n\nconst translate = (key: string, values?: Record<string, unknown>, rich = false): unknown => {\n const snapshot = requireSnapshot();\n const message = snapshot.messages[key];\n if (message === undefined) return key;\n const cacheKey = `${snapshot.locale}\\u0000${key}\\u0000${message}`;\n let formatter = compiled.get(cacheKey);\n if (!formatter) {\n formatter = new IntlMessageFormat(message, snapshot.locale);\n compiled.set(cacheKey, formatter);\n }\n const result = formatter.format(values as any);\n if (rich) return Array.isArray(result) && result.length === 1 ? result[0] : result;\n if (Array.isArray(result) && result.some((part) => typeof part !== \"string\")) {\n throw new Error(`Farm i18n message \"${key}\" contains rich content. Render it with t.rich().`);\n }\n return Array.isArray(result) ? result.join(\"\") : String(result);\n};\n\nexport const t = ((key: string, values?: Record<string, unknown>) =>\n translate(key, values)) as FarmTranslator;\nt.rich = (key: string, values?: Record<string, unknown>) => translate(key, values, true);\nt.raw = (key: string) => requireSnapshot().messages[key] ?? key;\nt.has = (key: string) => key in requireSnapshot().messages;\n\nexport function localizeActiveFarmHref(href: string, locale?: FarmI18nLocale): string {\n const snapshot = getFarmI18nClientState();\n if (!snapshot) return href;\n return localizeFarmHref(href, locale || snapshot.locale, snapshot);\n}\n\nexport function isFarmLocaleChangeHref(href: string): boolean {\n const snapshot = getFarmI18nClientState();\n if (!snapshot || typeof window === \"undefined\") return false;\n if (snapshot.routing === \"none\") return false;\n const target = new URL(href, window.location.origin);\n const match = resolveFarmLocalePath(target.pathname, snapshot);\n const targetLocale = match.locale || snapshot.defaultLocale;\n return targetLocale !== snapshot.locale;\n}\n\nexport function createFarmClientTranslator(): FarmTranslator {\n return (<TKey extends FarmI18nMessageKey>(key: TKey, ...args: FarmI18nMessageArgs<TKey>) =>\n t(key, ...args)) as FarmTranslator;\n}\n\nfunction requireSnapshot(): FarmI18nClientSnapshot {\n const snapshot = getFarmI18nClientState();\n if (!snapshot) {\n throw new Error(\"Farm i18n is not configured or has not been hydrated.\");\n }\n return snapshot;\n}\n"],"mappings":";;;;;;;;;;;;AAAA,OAAO,uBAAuB;AAa9B,IAAM,YAAY,oBAAI,IAAc;AACpC,IAAM,WAAW,oBAAI,IAA+B;AACpD,IAAI;AAEG,SAAS,yBAA6D;AAC3E,SAAO,mBAAmB,0BAA0B;AACtD;AAFgB;AAIT,SAAS,kBAAkB,UAAgC;AAChE,YAAU,IAAI,QAAQ;AACtB,SAAO,MAAM,UAAU,OAAO,QAAQ;AACxC;AAHgB;AAKT,SAAS,iBAAiB,UAAoD;AACnF,MAAI,CAAC,SAAU;AACf,QAAM,UAAU,iBAAiB,WAAW,SAAS;AACrD,oBAAkB;AAClB,MAAI,OAAO,WAAW,YAAa,QAAO,gBAAgB;AAC1D,MAAI,OAAO,aAAa,aAAa;AACnC,aAAS,gBAAgB,OAAO,SAAS;AACzC,aAAS,gBAAgB,MAAM,SAAS;AAAA,EAC1C;AACA,MAAI,QAAS,UAAS,MAAM;AAC5B,aAAW,YAAY,UAAW,UAAS;AAC7C;AAXgB;AAahB,IAAM,YAAY,wBAAC,KAAa,QAAkC,OAAO,UAAmB;AAC1F,QAAM,WAAW,gBAAgB;AACjC,QAAM,UAAU,SAAS,SAAS,GAAG;AACrC,MAAI,YAAY,OAAW,QAAO;AAClC,QAAM,WAAW,GAAG,SAAS,MAAM,KAAS,GAAG,KAAS,OAAO;AAC/D,MAAI,YAAY,SAAS,IAAI,QAAQ;AACrC,MAAI,CAAC,WAAW;AACd,gBAAY,IAAI,kBAAkB,SAAS,SAAS,MAAM;AAC1D,aAAS,IAAI,UAAU,SAAS;AAAA,EAClC;AACA,QAAM,SAAS,UAAU,OAAO,MAAa;AAC7C,MAAI,KAAM,QAAO,MAAM,QAAQ,MAAM,KAAK,OAAO,WAAW,IAAI,OAAO,CAAC,IAAI;AAC5E,MAAI,MAAM,QAAQ,MAAM,KAAK,OAAO,KAAK,CAAC,SAAS,OAAO,SAAS,QAAQ,GAAG;AAC5E,UAAM,IAAI,MAAM,sBAAsB,GAAG,mDAAmD;AAAA,EAC9F;AACA,SAAO,MAAM,QAAQ,MAAM,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,MAAM;AAChE,GAhBkB;AAkBX,IAAM,IAAK,yBAAC,KAAa,WAC9B,UAAU,KAAK,MAAM,IADL;AAElB,EAAE,OAAO,CAAC,KAAa,WAAqC,UAAU,KAAK,QAAQ,IAAI;AACvF,EAAE,MAAM,CAAC,QAAgB,gBAAgB,EAAE,SAAS,GAAG,KAAK;AAC5D,EAAE,MAAM,CAAC,QAAgB,OAAO,gBAAgB,EAAE;AAE3C,SAAS,uBAAuB,MAAc,QAAiC;AACpF,QAAM,WAAW,uBAAuB;AACxC,MAAI,CAAC,SAAU,QAAO;AACtB,SAAO,iBAAiB,MAAM,UAAU,SAAS,QAAQ,QAAQ;AACnE;AAJgB;AAMT,SAAS,uBAAuB,MAAuB;AAC5D,QAAM,WAAW,uBAAuB;AACxC,MAAI,CAAC,YAAY,OAAO,WAAW,YAAa,QAAO;AACvD,MAAI,SAAS,YAAY,OAAQ,QAAO;AACxC,QAAM,SAAS,IAAI,IAAI,MAAM,OAAO,SAAS,MAAM;AACnD,QAAM,QAAQ,sBAAsB,OAAO,UAAU,QAAQ;AAC7D,QAAM,eAAe,MAAM,UAAU,SAAS;AAC9C,SAAO,iBAAiB,SAAS;AACnC;AARgB;AAUT,SAAS,6BAA6C;AAC3D,UAAQ,CAAkC,QAAc,SACtD,EAAE,KAAK,GAAG,IAAI;AAClB;AAHgB;AAKhB,SAAS,kBAA0C;AACjD,QAAM,WAAW,uBAAuB;AACxC,MAAI,CAAC,UAAU;AACb,UAAM,IAAI,MAAM,uDAAuD;AAAA,EACzE;AACA,SAAO;AACT;AANS;","names":[]}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__name
|
|
3
|
+
} from "./chunk-CGILA3WO.mjs";
|
|
4
|
+
|
|
5
|
+
// src/environment.ts
|
|
6
|
+
var _FarmEnvironmentError = class _FarmEnvironmentError extends Error {
|
|
7
|
+
constructor(api, expected, actual) {
|
|
8
|
+
super(`${api}() can only be called on the ${expected}. It was called on the ${actual}.`);
|
|
9
|
+
this.api = api;
|
|
10
|
+
this.expected = expected;
|
|
11
|
+
this.actual = actual;
|
|
12
|
+
this.code = "FARM_ENVIRONMENT_MISMATCH";
|
|
13
|
+
this.name = "FarmEnvironmentError";
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
__name(_FarmEnvironmentError, "FarmEnvironmentError");
|
|
17
|
+
var FarmEnvironmentError = _FarmEnvironmentError;
|
|
18
|
+
function createServerOnlyFn(implementation, compiledActualEnvironment) {
|
|
19
|
+
if (compiledActualEnvironment) {
|
|
20
|
+
return createMismatchFunction("createServerOnlyFn", "server", compiledActualEnvironment);
|
|
21
|
+
}
|
|
22
|
+
if (getRuntimeEnvironment() !== "server") {
|
|
23
|
+
return createMismatchFunction("createServerOnlyFn", "server");
|
|
24
|
+
}
|
|
25
|
+
assertFunction(implementation, "createServerOnlyFn");
|
|
26
|
+
return implementation;
|
|
27
|
+
}
|
|
28
|
+
__name(createServerOnlyFn, "createServerOnlyFn");
|
|
29
|
+
function createClientOnlyFn(implementation, compiledActualEnvironment) {
|
|
30
|
+
if (compiledActualEnvironment) {
|
|
31
|
+
return createMismatchFunction("createClientOnlyFn", "client", compiledActualEnvironment);
|
|
32
|
+
}
|
|
33
|
+
if (getRuntimeEnvironment() !== "client") {
|
|
34
|
+
return createMismatchFunction("createClientOnlyFn", "client");
|
|
35
|
+
}
|
|
36
|
+
assertFunction(implementation, "createClientOnlyFn");
|
|
37
|
+
return implementation;
|
|
38
|
+
}
|
|
39
|
+
__name(createClientOnlyFn, "createClientOnlyFn");
|
|
40
|
+
function createIsomorphicFn(options) {
|
|
41
|
+
if (!options || typeof options !== "object") {
|
|
42
|
+
throw new TypeError("createIsomorphicFn requires server and client functions");
|
|
43
|
+
}
|
|
44
|
+
assertFunction(options.server, "createIsomorphicFn server");
|
|
45
|
+
assertFunction(options.client, "createIsomorphicFn client");
|
|
46
|
+
return getRuntimeEnvironment() === "server" ? options.server : options.client;
|
|
47
|
+
}
|
|
48
|
+
__name(createIsomorphicFn, "createIsomorphicFn");
|
|
49
|
+
function getRuntimeEnvironment() {
|
|
50
|
+
return typeof window === "undefined" ? "server" : "client";
|
|
51
|
+
}
|
|
52
|
+
__name(getRuntimeEnvironment, "getRuntimeEnvironment");
|
|
53
|
+
function createMismatchFunction(api, expected, actual = expected === "server" ? "client" : "server") {
|
|
54
|
+
return /* @__PURE__ */ __name(function farmEnvironmentBoundary() {
|
|
55
|
+
throw new FarmEnvironmentError(api, expected, actual);
|
|
56
|
+
}, "farmEnvironmentBoundary");
|
|
57
|
+
}
|
|
58
|
+
__name(createMismatchFunction, "createMismatchFunction");
|
|
59
|
+
function assertFunction(value, label) {
|
|
60
|
+
if (typeof value !== "function") {
|
|
61
|
+
throw new TypeError(`${label} must be a function`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
__name(assertFunction, "assertFunction");
|
|
65
|
+
|
|
66
|
+
export {
|
|
67
|
+
FarmEnvironmentError,
|
|
68
|
+
createServerOnlyFn,
|
|
69
|
+
createClientOnlyFn,
|
|
70
|
+
createIsomorphicFn
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=chunk-J23HNLFY.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/environment.ts"],"sourcesContent":["type AnyEnvironmentFunction = (...args: never[]) => unknown;\n\nexport type FarmEnvironment = \"server\" | \"client\";\n\nexport interface FarmIsomorphicFnOptions<TArgs extends unknown[], TServerResult, TClientResult> {\n server: (...args: TArgs) => TServerResult;\n client: (...args: TArgs) => TClientResult;\n}\n\nexport class FarmEnvironmentError extends Error {\n readonly code = \"FARM_ENVIRONMENT_MISMATCH\";\n\n constructor(\n readonly api: \"createServerOnlyFn\" | \"createClientOnlyFn\",\n readonly expected: FarmEnvironment,\n readonly actual: FarmEnvironment,\n ) {\n super(`${api}() can only be called on the ${expected}. It was called on the ${actual}.`);\n this.name = \"FarmEnvironmentError\";\n }\n}\n\nexport function createServerOnlyFn<TFunction extends AnyEnvironmentFunction>(\n implementation: TFunction,\n): TFunction;\nexport function createServerOnlyFn(\n implementation: AnyEnvironmentFunction | undefined,\n compiledActualEnvironment?: FarmEnvironment,\n): AnyEnvironmentFunction {\n if (compiledActualEnvironment) {\n return createMismatchFunction(\"createServerOnlyFn\", \"server\", compiledActualEnvironment);\n }\n if (getRuntimeEnvironment() !== \"server\") {\n return createMismatchFunction(\"createServerOnlyFn\", \"server\");\n }\n\n assertFunction(implementation, \"createServerOnlyFn\");\n return implementation;\n}\n\nexport function createClientOnlyFn<TFunction extends AnyEnvironmentFunction>(\n implementation: TFunction,\n): TFunction;\nexport function createClientOnlyFn(\n implementation: AnyEnvironmentFunction | undefined,\n compiledActualEnvironment?: FarmEnvironment,\n): AnyEnvironmentFunction {\n if (compiledActualEnvironment) {\n return createMismatchFunction(\"createClientOnlyFn\", \"client\", compiledActualEnvironment);\n }\n if (getRuntimeEnvironment() !== \"client\") {\n return createMismatchFunction(\"createClientOnlyFn\", \"client\");\n }\n\n assertFunction(implementation, \"createClientOnlyFn\");\n return implementation;\n}\n\nexport function createIsomorphicFn<TArgs extends unknown[], TServerResult, TClientResult>(\n options: FarmIsomorphicFnOptions<TArgs, TServerResult, TClientResult>,\n): (...args: TArgs) => TServerResult | TClientResult {\n if (!options || typeof options !== \"object\") {\n throw new TypeError(\"createIsomorphicFn requires server and client functions\");\n }\n\n assertFunction(options.server, \"createIsomorphicFn server\");\n assertFunction(options.client, \"createIsomorphicFn client\");\n\n return getRuntimeEnvironment() === \"server\" ? options.server : options.client;\n}\n\nfunction getRuntimeEnvironment(): FarmEnvironment {\n return typeof window === \"undefined\" ? \"server\" : \"client\";\n}\n\nfunction createMismatchFunction(\n api: \"createServerOnlyFn\" | \"createClientOnlyFn\",\n expected: FarmEnvironment,\n actual: FarmEnvironment = expected === \"server\" ? \"client\" : \"server\",\n) {\n return function farmEnvironmentBoundary(): never {\n throw new FarmEnvironmentError(api, expected, actual);\n };\n}\n\nfunction assertFunction(value: unknown, label: string): asserts value is AnyEnvironmentFunction {\n if (typeof value !== \"function\") {\n throw new TypeError(`${label} must be a function`);\n }\n}\n"],"mappings":";;;;;AASO,IAAM,wBAAN,MAAM,8BAA6B,MAAM;AAAA,EAG9C,YACW,KACA,UACA,QACT;AACA,UAAM,GAAG,GAAG,gCAAgC,QAAQ,0BAA0B,MAAM,GAAG;AAJ9E;AACA;AACA;AALX,SAAS,OAAO;AAQd,SAAK,OAAO;AAAA,EACd;AACF;AAXgD;AAAzC,IAAM,uBAAN;AAgBA,SAAS,mBACd,gBACA,2BACwB;AACxB,MAAI,2BAA2B;AAC7B,WAAO,uBAAuB,sBAAsB,UAAU,yBAAyB;AAAA,EACzF;AACA,MAAI,sBAAsB,MAAM,UAAU;AACxC,WAAO,uBAAuB,sBAAsB,QAAQ;AAAA,EAC9D;AAEA,iBAAe,gBAAgB,oBAAoB;AACnD,SAAO;AACT;AAbgB;AAkBT,SAAS,mBACd,gBACA,2BACwB;AACxB,MAAI,2BAA2B;AAC7B,WAAO,uBAAuB,sBAAsB,UAAU,yBAAyB;AAAA,EACzF;AACA,MAAI,sBAAsB,MAAM,UAAU;AACxC,WAAO,uBAAuB,sBAAsB,QAAQ;AAAA,EAC9D;AAEA,iBAAe,gBAAgB,oBAAoB;AACnD,SAAO;AACT;AAbgB;AAeT,SAAS,mBACd,SACmD;AACnD,MAAI,CAAC,WAAW,OAAO,YAAY,UAAU;AAC3C,UAAM,IAAI,UAAU,yDAAyD;AAAA,EAC/E;AAEA,iBAAe,QAAQ,QAAQ,2BAA2B;AAC1D,iBAAe,QAAQ,QAAQ,2BAA2B;AAE1D,SAAO,sBAAsB,MAAM,WAAW,QAAQ,SAAS,QAAQ;AACzE;AAXgB;AAahB,SAAS,wBAAyC;AAChD,SAAO,OAAO,WAAW,cAAc,WAAW;AACpD;AAFS;AAIT,SAAS,uBACP,KACA,UACA,SAA0B,aAAa,WAAW,WAAW,UAC7D;AACA,SAAO,gCAAS,0BAAiC;AAC/C,UAAM,IAAI,qBAAqB,KAAK,UAAU,MAAM;AAAA,EACtD,GAFO;AAGT;AARS;AAUT,SAAS,eAAe,OAAgB,OAAwD;AAC9F,MAAI,OAAO,UAAU,YAAY;AAC/B,UAAM,IAAI,UAAU,GAAG,KAAK,qBAAqB;AAAA,EACnD;AACF;AAJS;","names":[]}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__name
|
|
3
|
+
} from "./chunk-CGILA3WO.mjs";
|
|
4
|
+
|
|
5
|
+
// src/utils.ts
|
|
6
|
+
import path from "path";
|
|
7
|
+
function parseRoutePath(filePath) {
|
|
8
|
+
const segments = [];
|
|
9
|
+
const normalizedPath = filePath.replace(/\\/g, "/");
|
|
10
|
+
const pathParts = normalizedPath.split("/").filter(Boolean);
|
|
11
|
+
const fileName = pathParts.pop() || "";
|
|
12
|
+
const fileType = getRouteType(fileName);
|
|
13
|
+
for (const part of pathParts) {
|
|
14
|
+
if (part.startsWith("[") && part.endsWith("]")) {
|
|
15
|
+
let segment = part.slice(1, -1);
|
|
16
|
+
const isDynamic = true;
|
|
17
|
+
let isOptional = false;
|
|
18
|
+
let isCatchAll = false;
|
|
19
|
+
if (segment.startsWith("[") && segment.endsWith("]")) {
|
|
20
|
+
isOptional = true;
|
|
21
|
+
segment = segment.slice(1, -1);
|
|
22
|
+
if (segment.startsWith("...")) {
|
|
23
|
+
segment = segment.slice(3);
|
|
24
|
+
isCatchAll = true;
|
|
25
|
+
}
|
|
26
|
+
} else if (segment.startsWith("...")) {
|
|
27
|
+
segment = segment.slice(3);
|
|
28
|
+
isCatchAll = true;
|
|
29
|
+
}
|
|
30
|
+
segments.push({ segment, isDynamic, isOptional, isCatchAll });
|
|
31
|
+
} else {
|
|
32
|
+
segments.push({
|
|
33
|
+
segment: part,
|
|
34
|
+
isDynamic: false,
|
|
35
|
+
isOptional: false,
|
|
36
|
+
isCatchAll: false
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
segments,
|
|
42
|
+
filePath: normalizedPath,
|
|
43
|
+
type: fileType
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
__name(parseRoutePath, "parseRoutePath");
|
|
47
|
+
function getRouteType(fileName) {
|
|
48
|
+
const baseName = fileName.replace(/\.(tsx?|jsx?|mdx?|markdown)$/, "");
|
|
49
|
+
switch (baseName) {
|
|
50
|
+
case "page":
|
|
51
|
+
return "page";
|
|
52
|
+
case "layout":
|
|
53
|
+
return "layout";
|
|
54
|
+
case "loading":
|
|
55
|
+
return "loading";
|
|
56
|
+
case "error":
|
|
57
|
+
return "error";
|
|
58
|
+
case "not-found":
|
|
59
|
+
return "not-found";
|
|
60
|
+
default:
|
|
61
|
+
return "page";
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
__name(getRouteType, "getRouteType");
|
|
65
|
+
function segmentsToPattern(segments) {
|
|
66
|
+
if (segments.length === 0) return "/";
|
|
67
|
+
return "/" + segments.map((segment) => {
|
|
68
|
+
if (!segment.isDynamic) return segment.segment;
|
|
69
|
+
if (segment.isCatchAll) {
|
|
70
|
+
return segment.isOptional ? `*${segment.segment}?` : `*${segment.segment}`;
|
|
71
|
+
}
|
|
72
|
+
return `:${segment.segment}`;
|
|
73
|
+
}).join("/");
|
|
74
|
+
}
|
|
75
|
+
__name(segmentsToPattern, "segmentsToPattern");
|
|
76
|
+
function matchRoute(url, segments) {
|
|
77
|
+
const urlParts = url.split("/").filter(Boolean);
|
|
78
|
+
const params = {};
|
|
79
|
+
if (segments.length === 0) {
|
|
80
|
+
return { params, matches: urlParts.length === 0 };
|
|
81
|
+
}
|
|
82
|
+
let urlIndex = 0;
|
|
83
|
+
let segmentIndex = 0;
|
|
84
|
+
while (segmentIndex < segments.length && urlIndex <= urlParts.length) {
|
|
85
|
+
const segment = segments[segmentIndex];
|
|
86
|
+
if (!segment.isDynamic) {
|
|
87
|
+
if (urlParts[urlIndex] !== segment.segment) {
|
|
88
|
+
return { params: {}, matches: false };
|
|
89
|
+
}
|
|
90
|
+
urlIndex++;
|
|
91
|
+
segmentIndex++;
|
|
92
|
+
} else if (segment.isCatchAll) {
|
|
93
|
+
const remainingParts = urlParts.slice(urlIndex);
|
|
94
|
+
if (remainingParts.length === 0 && !segment.isOptional) {
|
|
95
|
+
return { params: {}, matches: false };
|
|
96
|
+
}
|
|
97
|
+
params[segment.segment] = remainingParts.join("/");
|
|
98
|
+
urlIndex = urlParts.length;
|
|
99
|
+
segmentIndex++;
|
|
100
|
+
} else {
|
|
101
|
+
if (urlIndex >= urlParts.length) {
|
|
102
|
+
return { params: {}, matches: false };
|
|
103
|
+
}
|
|
104
|
+
params[segment.segment] = urlParts[urlIndex];
|
|
105
|
+
urlIndex++;
|
|
106
|
+
segmentIndex++;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const matches = segmentIndex === segments.length && urlIndex === urlParts.length;
|
|
110
|
+
return { params, matches };
|
|
111
|
+
}
|
|
112
|
+
__name(matchRoute, "matchRoute");
|
|
113
|
+
function resolveAppPath(root, ...paths) {
|
|
114
|
+
return path.resolve(root, ...paths);
|
|
115
|
+
}
|
|
116
|
+
__name(resolveAppPath, "resolveAppPath");
|
|
117
|
+
function toViteModuleId(filePath, root) {
|
|
118
|
+
if (!path.isAbsolute(filePath)) return filePath;
|
|
119
|
+
const relativePath = path.relative(root, filePath);
|
|
120
|
+
if (relativePath && !relativePath.startsWith("..") && !path.isAbsolute(relativePath)) {
|
|
121
|
+
return `/${relativePath.split(path.sep).join("/")}`;
|
|
122
|
+
}
|
|
123
|
+
const normalizedPath = filePath.replace(/\\/g, "/");
|
|
124
|
+
return normalizedPath.startsWith("/") ? `/@fs${normalizedPath}` : `/@fs/${normalizedPath}`;
|
|
125
|
+
}
|
|
126
|
+
__name(toViteModuleId, "toViteModuleId");
|
|
127
|
+
async function fileExists(filePath) {
|
|
128
|
+
try {
|
|
129
|
+
const fs = await import("fs/promises");
|
|
130
|
+
await fs.access(filePath);
|
|
131
|
+
return true;
|
|
132
|
+
} catch {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
__name(fileExists, "fileExists");
|
|
137
|
+
async function globFiles(pattern, cwd) {
|
|
138
|
+
const glob = await import("fast-glob");
|
|
139
|
+
return glob.default(pattern, { cwd, absolute: false });
|
|
140
|
+
}
|
|
141
|
+
__name(globFiles, "globFiles");
|
|
142
|
+
function parseSearchParams(searchParams) {
|
|
143
|
+
const result = {};
|
|
144
|
+
for (const [key, value] of searchParams.entries()) {
|
|
145
|
+
if (key in result) {
|
|
146
|
+
const existing = result[key];
|
|
147
|
+
if (Array.isArray(existing)) {
|
|
148
|
+
existing.push(value);
|
|
149
|
+
} else {
|
|
150
|
+
result[key] = [existing, value];
|
|
151
|
+
}
|
|
152
|
+
} else {
|
|
153
|
+
result[key] = value;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return result;
|
|
157
|
+
}
|
|
158
|
+
__name(parseSearchParams, "parseSearchParams");
|
|
159
|
+
var logger = {
|
|
160
|
+
info: /* @__PURE__ */ __name((message) => console.log(`[info] ${message}`), "info"),
|
|
161
|
+
success: /* @__PURE__ */ __name((message) => console.log(`[success] ${message}`), "success"),
|
|
162
|
+
warn: /* @__PURE__ */ __name((message) => console.warn(`\u26A0\uFE0F ${message}`), "warn"),
|
|
163
|
+
error: /* @__PURE__ */ __name((message) => console.error(`\u274C ${message}`), "error"),
|
|
164
|
+
ready: /* @__PURE__ */ __name((message) => console.log(`${message}`), "ready"),
|
|
165
|
+
event: /* @__PURE__ */ __name((message) => console.log(` ${message}`), "event")
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
export {
|
|
169
|
+
parseRoutePath,
|
|
170
|
+
segmentsToPattern,
|
|
171
|
+
matchRoute,
|
|
172
|
+
resolveAppPath,
|
|
173
|
+
toViteModuleId,
|
|
174
|
+
fileExists,
|
|
175
|
+
globFiles,
|
|
176
|
+
parseSearchParams,
|
|
177
|
+
logger
|
|
178
|
+
};
|
|
179
|
+
//# sourceMappingURL=chunk-J4FNJ5IU.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils.ts"],"sourcesContent":["import type { RouteSegment, ParsedRoute } from \"./types\";\nimport path from \"path\";\n\nexport function parseRoutePath(filePath: string): ParsedRoute {\n const segments: RouteSegment[] = [];\n const normalizedPath = filePath.replace(/\\\\/g, \"/\");\n const pathParts = normalizedPath.split(\"/\").filter(Boolean);\n\n const fileName = pathParts.pop() || \"\";\n const fileType = getRouteType(fileName);\n\n for (const part of pathParts) {\n if (part.startsWith(\"[\") && part.endsWith(\"]\")) {\n let segment = part.slice(1, -1);\n const isDynamic = true;\n let isOptional = false;\n let isCatchAll = false;\n\n if (segment.startsWith(\"[\") && segment.endsWith(\"]\")) {\n isOptional = true;\n segment = segment.slice(1, -1);\n if (segment.startsWith(\"...\")) {\n segment = segment.slice(3);\n isCatchAll = true;\n }\n } else if (segment.startsWith(\"...\")) {\n segment = segment.slice(3);\n isCatchAll = true;\n }\n\n segments.push({ segment, isDynamic, isOptional, isCatchAll });\n } else {\n segments.push({\n segment: part,\n isDynamic: false,\n isOptional: false,\n isCatchAll: false,\n });\n }\n }\n\n return {\n segments,\n filePath: normalizedPath,\n type: fileType,\n };\n}\n\nfunction getRouteType(fileName: string): ParsedRoute[\"type\"] {\n const baseName = fileName.replace(/\\.(tsx?|jsx?|mdx?|markdown)$/, \"\");\n\n switch (baseName) {\n case \"page\":\n return \"page\";\n case \"layout\":\n return \"layout\";\n case \"loading\":\n return \"loading\";\n case \"error\":\n return \"error\";\n case \"not-found\":\n return \"not-found\";\n default:\n return \"page\";\n }\n}\n\nexport function segmentsToPattern(segments: RouteSegment[]): string {\n if (segments.length === 0) return \"/\";\n\n return (\n \"/\" +\n segments\n .map((segment) => {\n if (!segment.isDynamic) return segment.segment;\n\n if (segment.isCatchAll) {\n return segment.isOptional ? `*${segment.segment}?` : `*${segment.segment}`;\n }\n\n return `:${segment.segment}`;\n })\n .join(\"/\")\n );\n}\n\nexport function matchRoute(\n url: string,\n segments: RouteSegment[],\n): { params: Record<string, string>; matches: boolean } {\n const urlParts = url.split(\"/\").filter(Boolean);\n const params: Record<string, string> = {};\n if (segments.length === 0) {\n return { params, matches: urlParts.length === 0 };\n }\n\n let urlIndex = 0;\n let segmentIndex = 0;\n\n while (segmentIndex < segments.length && urlIndex <= urlParts.length) {\n const segment = segments[segmentIndex];\n\n if (!segment.isDynamic) {\n if (urlParts[urlIndex] !== segment.segment) {\n return { params: {}, matches: false };\n }\n urlIndex++;\n segmentIndex++;\n } else if (segment.isCatchAll) {\n const remainingParts = urlParts.slice(urlIndex);\n\n if (remainingParts.length === 0 && !segment.isOptional) {\n return { params: {}, matches: false };\n }\n\n params[segment.segment] = remainingParts.join(\"/\");\n urlIndex = urlParts.length;\n segmentIndex++;\n } else {\n if (urlIndex >= urlParts.length) {\n return { params: {}, matches: false };\n }\n\n params[segment.segment] = urlParts[urlIndex];\n urlIndex++;\n segmentIndex++;\n }\n }\n\n const matches = segmentIndex === segments.length && urlIndex === urlParts.length;\n\n return { params, matches };\n}\n\nexport function resolveAppPath(root: string, ...paths: string[]): string {\n return path.resolve(root, ...paths);\n}\n\nexport function toViteModuleId(filePath: string, root: string): string {\n if (!path.isAbsolute(filePath)) return filePath;\n\n const relativePath = path.relative(root, filePath);\n if (relativePath && !relativePath.startsWith(\"..\") && !path.isAbsolute(relativePath)) {\n return `/${relativePath.split(path.sep).join(\"/\")}`;\n }\n\n const normalizedPath = filePath.replace(/\\\\/g, \"/\");\n return normalizedPath.startsWith(\"/\") ? `/@fs${normalizedPath}` : `/@fs/${normalizedPath}`;\n}\n\nexport async function fileExists(filePath: string): Promise<boolean> {\n try {\n const fs = await import(\"fs/promises\");\n await fs.access(filePath);\n return true;\n } catch {\n return false;\n }\n}\n\nexport async function globFiles(pattern: string, cwd: string): Promise<string[]> {\n const glob = await import(\"fast-glob\");\n return glob.default(pattern, { cwd, absolute: false });\n}\n\nexport function parseSearchParams(\n searchParams: URLSearchParams,\n): Record<string, string | string[]> {\n const result: Record<string, string | string[]> = {};\n\n for (const [key, value] of searchParams.entries()) {\n if (key in result) {\n const existing = result[key];\n if (Array.isArray(existing)) {\n existing.push(value);\n } else {\n result[key] = [existing, value];\n }\n } else {\n result[key] = value;\n }\n }\n\n return result;\n}\n\nexport const logger = {\n info: (message: string) => console.log(`[info] ${message}`),\n success: (message: string) => console.log(`[success] ${message}`),\n warn: (message: string) => console.warn(`⚠️ ${message}`),\n error: (message: string) => console.error(`❌ ${message}`),\n ready: (message: string) => console.log(`${message}`),\n event: (message: string) => console.log(` ${message}`),\n};\n"],"mappings":"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","names":[]}
|