@farm.js/core 0.1.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +11 -0
- 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 +93 -0
- package/dist/agent-runtime.d.ts +93 -0
- package/dist/agent-runtime.mjs +479 -0
- package/dist/agent-runtime.mjs.map +1 -0
- package/dist/api/route-manager.cjs +1196 -0
- package/dist/api/route-manager.cjs.map +1 -0
- package/dist/api/route-manager.d.mts +64 -0
- package/dist/api/route-manager.d.ts +64 -0
- package/dist/api/route-manager.mjs +34 -0
- package/dist/api/route-manager.mjs.map +1 -0
- package/dist/api/runtime.cjs +272 -0
- package/dist/api/runtime.cjs.map +1 -0
- package/dist/api/runtime.d.mts +16 -0
- package/dist/api/runtime.d.ts +16 -0
- package/dist/api/runtime.mjs +16 -0
- package/dist/api/runtime.mjs.map +1 -0
- package/dist/api.cjs +3199 -0
- package/dist/api.cjs.map +1 -0
- package/dist/api.d.mts +190 -0
- package/dist/api.d.ts +190 -0
- package/dist/api.mjs +63 -0
- package/dist/api.mjs.map +1 -0
- package/dist/app-BiX4qb-d.d.mts +265 -0
- package/dist/app-CFRNJXP1.d.ts +265 -0
- package/dist/app-markdown.cjs +220 -0
- package/dist/app-markdown.cjs.map +1 -0
- package/dist/app-markdown.d.mts +21 -0
- package/dist/app-markdown.d.ts +21 -0
- package/dist/app-markdown.mjs +26 -0
- package/dist/app-markdown.mjs.map +1 -0
- package/dist/cache.cjs +543 -0
- package/dist/cache.cjs.map +1 -0
- package/dist/cache.d.mts +78 -0
- package/dist/cache.d.ts +78 -0
- package/dist/cache.mjs +38 -0
- package/dist/cache.mjs.map +1 -0
- package/dist/chunk-25D7G34K.mjs +142 -0
- package/dist/chunk-25D7G34K.mjs.map +1 -0
- package/dist/chunk-3QJO55ZF.mjs +3548 -0
- package/dist/chunk-3QJO55ZF.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-4PTK6KT4.mjs +364 -0
- package/dist/chunk-4PTK6KT4.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-6XDUHOEM.mjs +157 -0
- package/dist/chunk-6XDUHOEM.mjs.map +1 -0
- package/dist/chunk-74YTBPTY.mjs +450 -0
- package/dist/chunk-74YTBPTY.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-7ZY5AIJO.mjs +161 -0
- package/dist/chunk-7ZY5AIJO.mjs.map +1 -0
- package/dist/chunk-AGS7UJ52.mjs +446 -0
- package/dist/chunk-AGS7UJ52.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-B6N4ZB2H.mjs +718 -0
- package/dist/chunk-B6N4ZB2H.mjs.map +1 -0
- package/dist/chunk-BHG3LVHH.mjs +176 -0
- package/dist/chunk-BHG3LVHH.mjs.map +1 -0
- package/dist/chunk-C3DLZMBU.mjs +597 -0
- package/dist/chunk-C3DLZMBU.mjs.map +1 -0
- package/dist/chunk-CGILA3WO.mjs +14 -0
- package/dist/chunk-CGILA3WO.mjs.map +1 -0
- package/dist/chunk-CHFHNEMO.mjs +7088 -0
- package/dist/chunk-CHFHNEMO.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-EVGBEZDF.mjs +215 -0
- package/dist/chunk-EVGBEZDF.mjs.map +1 -0
- package/dist/chunk-FQYDHKKU.mjs +128 -0
- package/dist/chunk-FQYDHKKU.mjs.map +1 -0
- package/dist/chunk-G3B5BRDY.mjs +5763 -0
- package/dist/chunk-G3B5BRDY.mjs.map +1 -0
- package/dist/chunk-GN72QAIH.mjs +146 -0
- package/dist/chunk-GN72QAIH.mjs.map +1 -0
- package/dist/chunk-GS6K5OCM.mjs +407 -0
- package/dist/chunk-GS6K5OCM.mjs.map +1 -0
- package/dist/chunk-GY2STC2S.mjs +180 -0
- package/dist/chunk-GY2STC2S.mjs.map +1 -0
- package/dist/chunk-GZP5W4K3.mjs +158 -0
- package/dist/chunk-GZP5W4K3.mjs.map +1 -0
- package/dist/chunk-H2FA2SBS.mjs +51 -0
- package/dist/chunk-H2FA2SBS.mjs.map +1 -0
- package/dist/chunk-HXP3ZSPC.mjs +211 -0
- package/dist/chunk-HXP3ZSPC.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-JK25YEN6.mjs +219 -0
- package/dist/chunk-JK25YEN6.mjs.map +1 -0
- package/dist/chunk-JLWMCADZ.mjs +204 -0
- package/dist/chunk-JLWMCADZ.mjs.map +1 -0
- package/dist/chunk-JN3UU635.mjs +622 -0
- package/dist/chunk-JN3UU635.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-LLC7BNXW.mjs +275 -0
- package/dist/chunk-LLC7BNXW.mjs.map +1 -0
- package/dist/chunk-LM2YNO4U.mjs +24 -0
- package/dist/chunk-LM2YNO4U.mjs.map +1 -0
- package/dist/chunk-NNLCAVB6.mjs +391 -0
- package/dist/chunk-NNLCAVB6.mjs.map +1 -0
- package/dist/chunk-O3HADRW6.mjs +639 -0
- package/dist/chunk-O3HADRW6.mjs.map +1 -0
- package/dist/chunk-OYXO65LI.mjs +119 -0
- package/dist/chunk-OYXO65LI.mjs.map +1 -0
- package/dist/chunk-P7QDS5AT.mjs +191 -0
- package/dist/chunk-P7QDS5AT.mjs.map +1 -0
- package/dist/chunk-PRNYWD7K.mjs +599 -0
- package/dist/chunk-PRNYWD7K.mjs.map +1 -0
- package/dist/chunk-QF4PHCMA.mjs +422 -0
- package/dist/chunk-QF4PHCMA.mjs.map +1 -0
- package/dist/chunk-QFQRHRZS.mjs +1224 -0
- package/dist/chunk-QFQRHRZS.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-QM6VV26B.mjs +149 -0
- package/dist/chunk-QM6VV26B.mjs.map +1 -0
- package/dist/chunk-RHIFZZUI.mjs +69 -0
- package/dist/chunk-RHIFZZUI.mjs.map +1 -0
- package/dist/chunk-RKI6TN3A.mjs +49 -0
- package/dist/chunk-RKI6TN3A.mjs.map +1 -0
- package/dist/chunk-RSKVYESE.mjs +187 -0
- package/dist/chunk-RSKVYESE.mjs.map +1 -0
- package/dist/chunk-S2XHZS7W.mjs +180 -0
- package/dist/chunk-S2XHZS7W.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-SOU3Q3ZA.mjs +173 -0
- package/dist/chunk-SOU3Q3ZA.mjs.map +1 -0
- package/dist/chunk-SPBBQLXI.mjs +207 -0
- package/dist/chunk-SPBBQLXI.mjs.map +1 -0
- package/dist/chunk-SXZTEK3V.mjs +396 -0
- package/dist/chunk-SXZTEK3V.mjs.map +1 -0
- package/dist/chunk-T4QJQK76.mjs +459 -0
- package/dist/chunk-T4QJQK76.mjs.map +1 -0
- package/dist/chunk-TRORP7E4.mjs +41 -0
- package/dist/chunk-TRORP7E4.mjs.map +1 -0
- package/dist/chunk-TU4YJICB.mjs +728 -0
- package/dist/chunk-TU4YJICB.mjs.map +1 -0
- package/dist/chunk-TXCFGOHW.mjs +42 -0
- package/dist/chunk-TXCFGOHW.mjs.map +1 -0
- package/dist/chunk-UHE2TTLK.mjs +466 -0
- package/dist/chunk-UHE2TTLK.mjs.map +1 -0
- package/dist/chunk-UREJA4GZ.mjs +364 -0
- package/dist/chunk-UREJA4GZ.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-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-WZ5QFROO.mjs +23 -0
- package/dist/chunk-WZ5QFROO.mjs.map +1 -0
- package/dist/chunk-Y2OJJD7R.mjs +543 -0
- package/dist/chunk-Y2OJJD7R.mjs.map +1 -0
- package/dist/chunk-Y7A27276.mjs +538 -0
- package/dist/chunk-Y7A27276.mjs.map +1 -0
- package/dist/chunk-YHU7SS6L.mjs +365 -0
- package/dist/chunk-YHU7SS6L.mjs.map +1 -0
- package/dist/chunk-ZBE6MLHL.mjs +230 -0
- package/dist/chunk-ZBE6MLHL.mjs.map +1 -0
- package/dist/chunk-ZJQNATYV.mjs +299 -0
- package/dist/chunk-ZJQNATYV.mjs.map +1 -0
- package/dist/client-D_yUjVhe.d.mts +402 -0
- package/dist/client-Dkc03WP8.d.ts +402 -0
- package/dist/client-cache-CIlyBlmx.d.ts +6 -0
- package/dist/client-cache-D-EZ7XVW.d.mts +6 -0
- package/dist/client-plugins-BZnpeTGA.d.ts +1848 -0
- package/dist/client-plugins-g4bzuCmo.d.mts +1848 -0
- package/dist/client-plugins.cjs +415 -0
- package/dist/client-plugins.cjs.map +1 -0
- package/dist/client-plugins.d.mts +21 -0
- package/dist/client-plugins.d.ts +21 -0
- package/dist/client-plugins.mjs +10 -0
- package/dist/client-plugins.mjs.map +1 -0
- package/dist/client.cjs +4571 -0
- package/dist/client.cjs.map +1 -0
- package/dist/client.d.mts +329 -0
- package/dist/client.d.ts +329 -0
- package/dist/client.mjs +103 -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 +28 -0
- package/dist/config.d.ts +28 -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-AE4RVXCM.mjs +370 -0
- package/dist/devtools-AE4RVXCM.mjs.map +1 -0
- package/dist/devtools-client-6WPY2AQU.mjs +225 -0
- package/dist/devtools-client-6WPY2AQU.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 +5541 -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 +46 -0
- package/dist/docs.mjs.map +1 -0
- package/dist/env-types.cjs +223 -0
- package/dist/env-types.cjs.map +1 -0
- package/dist/env-types.d.mts +11 -0
- package/dist/env-types.d.ts +11 -0
- package/dist/env-types.mjs +9 -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.cjs +374 -0
- package/dist/environment/vite.cjs.map +1 -0
- package/dist/environment/vite.d.mts +22 -0
- package/dist/environment/vite.d.ts +22 -0
- package/dist/environment/vite.mjs +10 -0
- package/dist/environment/vite.mjs.map +1 -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.cjs +283 -0
- package/dist/i18n/client.cjs.map +1 -0
- package/dist/i18n/client.d.mts +32 -0
- package/dist/i18n/client.d.ts +32 -0
- package/dist/i18n/client.mjs +121 -0
- package/dist/i18n/client.mjs.map +1 -0
- package/dist/i18n/index.cjs +130 -0
- package/dist/i18n/index.cjs.map +1 -0
- package/dist/i18n/index.d.mts +20 -0
- package/dist/i18n/index.d.ts +20 -0
- package/dist/i18n/index.mjs +22 -0
- package/dist/i18n/index.mjs.map +1 -0
- package/dist/i18n/server.cjs +637 -0
- package/dist/i18n/server.cjs.map +1 -0
- package/dist/i18n/server.d.mts +30 -0
- package/dist/i18n/server.d.ts +30 -0
- package/dist/i18n/server.mjs +32 -0
- package/dist/i18n/server.mjs.map +1 -0
- package/dist/image/server.cjs +477 -0
- package/dist/image/server.cjs.map +1 -0
- package/dist/image/server.d.mts +37 -0
- package/dist/image/server.d.ts +37 -0
- package/dist/image/server.mjs +16 -0
- package/dist/image/server.mjs.map +1 -0
- package/dist/image/sharp.cjs +135 -0
- package/dist/image/sharp.cjs.map +1 -0
- package/dist/image/sharp.d.mts +7 -0
- package/dist/image/sharp.d.ts +7 -0
- package/dist/image/sharp.mjs +75 -0
- package/dist/image/sharp.mjs.map +1 -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 +39433 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.mts +451 -0
- package/dist/index.d.ts +451 -0
- package/dist/index.mjs +930 -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 +21 -0
- package/dist/integrations.d.ts +21 -0
- package/dist/integrations.mjs +51 -0
- package/dist/integrations.mjs.map +1 -0
- package/dist/internal/build-runtime.cjs +31340 -0
- package/dist/internal/build-runtime.cjs.map +1 -0
- package/dist/internal/build-runtime.d.mts +38 -0
- package/dist/internal/build-runtime.d.ts +38 -0
- package/dist/internal/build-runtime.mjs +73 -0
- package/dist/internal/build-runtime.mjs.map +1 -0
- package/dist/internal/client-runtime.cjs +579 -0
- package/dist/internal/client-runtime.cjs.map +1 -0
- package/dist/internal/client-runtime.d.mts +2 -0
- package/dist/internal/client-runtime.d.ts +2 -0
- package/dist/internal/client-runtime.mjs +12 -0
- package/dist/internal/client-runtime.mjs.map +1 -0
- package/dist/internal/config-runtime.cjs +4172 -0
- package/dist/internal/config-runtime.cjs.map +1 -0
- package/dist/internal/config-runtime.d.mts +38 -0
- package/dist/internal/config-runtime.d.ts +38 -0
- package/dist/internal/config-runtime.mjs +38 -0
- package/dist/internal/config-runtime.mjs.map +1 -0
- package/dist/internal/production-node-env.cjs +65 -0
- package/dist/internal/production-node-env.cjs.map +1 -0
- package/dist/internal/production-node-env.d.mts +12 -0
- package/dist/internal/production-node-env.d.ts +12 -0
- package/dist/internal/production-node-env.mjs +8 -0
- package/dist/internal/production-node-env.mjs.map +1 -0
- package/dist/internal/production-runtime.cjs +1896 -0
- package/dist/internal/production-runtime.cjs.map +1 -0
- package/dist/internal/production-runtime.d.mts +39 -0
- package/dist/internal/production-runtime.d.ts +39 -0
- package/dist/internal/production-runtime.mjs +79 -0
- package/dist/internal/production-runtime.mjs.map +1 -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 +299 -0
- package/dist/markdown.cjs.map +1 -0
- package/dist/markdown.d.mts +43 -0
- package/dist/markdown.d.ts +43 -0
- package/dist/markdown.mjs +14 -0
- package/dist/markdown.mjs.map +1 -0
- package/dist/metadata-C9NZxMDW.d.mts +22 -0
- package/dist/metadata-DAXRaOHx.d.ts +22 -0
- package/dist/middleware.cjs +2148 -0
- package/dist/middleware.cjs.map +1 -0
- package/dist/middleware.d.mts +163 -0
- package/dist/middleware.d.ts +163 -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 +1304 -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-KME62MWG.mjs +691 -0
- package/dist/nitro-KME62MWG.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 +22285 -0
- package/dist/plugin.cjs.map +1 -0
- package/dist/plugin.d.mts +21 -0
- package/dist/plugin.d.ts +21 -0
- package/dist/plugin.mjs +60 -0
- package/dist/plugin.mjs.map +1 -0
- package/dist/production-runtime-C_B79w2P.d.mts +28 -0
- package/dist/production-runtime-DDEM1D2q.d.ts +28 -0
- package/dist/production-runtime-DRkCHUvJ.d.ts +79 -0
- package/dist/production-runtime-flrjp_nC.d.mts +79 -0
- package/dist/query/client.cjs +560 -0
- package/dist/query/client.cjs.map +1 -0
- package/dist/query/client.d.mts +61 -0
- package/dist/query/client.d.ts +61 -0
- package/dist/query/client.mjs +364 -0
- package/dist/query/client.mjs.map +1 -0
- package/dist/query/index.cjs +226 -0
- package/dist/query/index.cjs.map +1 -0
- package/dist/query/index.d.mts +90 -0
- package/dist/query/index.d.ts +90 -0
- package/dist/query/index.mjs +31 -0
- package/dist/query/index.mjs.map +1 -0
- package/dist/query/parsers.cjs +178 -0
- package/dist/query/parsers.cjs.map +1 -0
- package/dist/query/parsers.d.mts +25 -0
- package/dist/query/parsers.d.ts +25 -0
- package/dist/query/parsers.mjs +24 -0
- package/dist/query/parsers.mjs.map +1 -0
- package/dist/query/server.cjs +301 -0
- package/dist/query/server.cjs.map +1 -0
- package/dist/query/server.d.mts +55 -0
- package/dist/query/server.d.ts +55 -0
- package/dist/query/server.mjs +105 -0
- package/dist/query/server.mjs.map +1 -0
- package/dist/request-BrFBuc8G.d.mts +6 -0
- package/dist/request-BslSZIRz.d.ts +6 -0
- package/dist/request.cjs +71 -0
- package/dist/request.cjs.map +1 -0
- package/dist/request.d.mts +2 -0
- package/dist/request.d.ts +2 -0
- package/dist/request.mjs +9 -0
- package/dist/request.mjs.map +1 -0
- package/dist/resolver-C6iecsDV.d.ts +14 -0
- package/dist/resolver-DlOPpjkB.d.mts +14 -0
- package/dist/route-runtime-DoOHzCAD.d.mts +38 -0
- package/dist/route-runtime-DoOHzCAD.d.ts +38 -0
- package/dist/router.cjs +254 -0
- package/dist/router.cjs.map +1 -0
- package/dist/router.d.mts +36 -0
- package/dist/router.d.ts +36 -0
- package/dist/router.mjs +14 -0
- package/dist/router.mjs.map +1 -0
- package/dist/routes.cjs +1213 -0
- package/dist/routes.cjs.map +1 -0
- package/dist/routes.d.mts +224 -0
- package/dist/routes.d.ts +224 -0
- package/dist/routes.mjs +52 -0
- package/dist/routes.mjs.map +1 -0
- package/dist/runtime-B6GvwDS1.d.ts +27 -0
- package/dist/runtime-DeAAZ6gO.d.mts +27 -0
- package/dist/search-client-6OXIBNYQ.mjs +14 -0
- package/dist/search-client-6OXIBNYQ.mjs.map +1 -0
- package/dist/server-action-security.cjs +492 -0
- package/dist/server-action-security.cjs.map +1 -0
- package/dist/server-action-security.d.mts +42 -0
- package/dist/server-action-security.d.ts +42 -0
- package/dist/server-action-security.mjs +29 -0
- package/dist/server-action-security.mjs.map +1 -0
- package/dist/server-fn-client.cjs +180 -0
- package/dist/server-fn-client.cjs.map +1 -0
- package/dist/server-fn-client.d.mts +31 -0
- package/dist/server-fn-client.d.ts +31 -0
- package/dist/server-fn-client.mjs +9 -0
- package/dist/server-fn-client.mjs.map +1 -0
- package/dist/server-fn.cjs +284 -0
- package/dist/server-fn.cjs.map +1 -0
- package/dist/server-fn.d.mts +84 -0
- package/dist/server-fn.d.ts +84 -0
- package/dist/server-fn.mjs +17 -0
- package/dist/server-fn.mjs.map +1 -0
- package/dist/server-plugins.cjs +235 -0
- package/dist/server-plugins.cjs.map +1 -0
- package/dist/server-plugins.d.mts +54 -0
- package/dist/server-plugins.d.ts +54 -0
- package/dist/server-plugins.mjs +18 -0
- package/dist/server-plugins.mjs.map +1 -0
- package/dist/server-query-client.cjs +792 -0
- package/dist/server-query-client.cjs.map +1 -0
- package/dist/server-query-client.d.mts +50 -0
- package/dist/server-query-client.d.ts +50 -0
- package/dist/server-query-client.mjs +23 -0
- package/dist/server-query-client.mjs.map +1 -0
- package/dist/server-query.cjs +804 -0
- package/dist/server-query.cjs.map +1 -0
- package/dist/server-query.d.mts +36 -0
- package/dist/server-query.d.ts +36 -0
- package/dist/server-query.mjs +18 -0
- package/dist/server-query.mjs.map +1 -0
- package/dist/server.cjs +25739 -0
- package/dist/server.cjs.map +1 -0
- package/dist/server.d.mts +47 -0
- package/dist/server.d.ts +47 -0
- package/dist/server.mjs +511 -0
- package/dist/server.mjs.map +1 -0
- package/dist/storage.cjs +515 -0
- package/dist/storage.cjs.map +1 -0
- package/dist/storage.d.mts +52 -0
- package/dist/storage.d.ts +52 -0
- package/dist/storage.mjs +58 -0
- package/dist/storage.mjs.map +1 -0
- package/dist/testing.cjs +1882 -0
- package/dist/testing.cjs.map +1 -0
- package/dist/testing.d.mts +100 -0
- package/dist/testing.d.ts +100 -0
- package/dist/testing.mjs +324 -0
- package/dist/testing.mjs.map +1 -0
- package/dist/types-BH1lhg5G.d.mts +81 -0
- package/dist/types-BH1lhg5G.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-DA1yo54_.d.ts +23 -0
- package/dist/utils-DOXXivjL.d.mts +23 -0
- package/dist/vite.cjs +22684 -0
- package/dist/vite.cjs.map +1 -0
- package/dist/vite.d.mts +21 -0
- package/dist/vite.d.ts +21 -0
- package/dist/vite.mjs +59 -0
- package/dist/vite.mjs.map +1 -0
- package/dist/workflows.cjs +586 -0
- package/dist/workflows.cjs.map +1 -0
- package/dist/workflows.d.mts +110 -0
- package/dist/workflows.d.ts +110 -0
- package/dist/workflows.mjs +32 -0
- package/dist/workflows.mjs.map +1 -0
- package/package.json +523 -0
- package/types/api.d.ts +88 -0
- package/types/client.d.ts +1171 -0
- package/types/index.d.ts +17 -0
- package/types/middleware.d.ts +266 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__name
|
|
3
|
+
} from "./chunk-CGILA3WO.mjs";
|
|
4
|
+
|
|
5
|
+
// src/query/parsers.ts
|
|
6
|
+
var asString = {
|
|
7
|
+
parse: /* @__PURE__ */ __name((value) => value && value.trim() || null, "parse"),
|
|
8
|
+
serialize: /* @__PURE__ */ __name((value) => value, "serialize"),
|
|
9
|
+
withDefault: /* @__PURE__ */ __name((defaultValue) => ({
|
|
10
|
+
parse: /* @__PURE__ */ __name((value) => value && value.trim() || defaultValue, "parse"),
|
|
11
|
+
serialize: /* @__PURE__ */ __name((value) => value || defaultValue, "serialize")
|
|
12
|
+
}), "withDefault")
|
|
13
|
+
};
|
|
14
|
+
var asInteger = {
|
|
15
|
+
parse: /* @__PURE__ */ __name((value) => {
|
|
16
|
+
const parsed = Number.parseInt(value, 10);
|
|
17
|
+
return isNaN(parsed) ? null : parsed;
|
|
18
|
+
}, "parse"),
|
|
19
|
+
serialize: /* @__PURE__ */ __name((value) => value.toString(), "serialize"),
|
|
20
|
+
withDefault: /* @__PURE__ */ __name((defaultValue) => ({
|
|
21
|
+
parse: /* @__PURE__ */ __name((value) => {
|
|
22
|
+
const parsed = Number.parseInt(value, 10);
|
|
23
|
+
return isNaN(parsed) ? defaultValue : parsed;
|
|
24
|
+
}, "parse"),
|
|
25
|
+
serialize: /* @__PURE__ */ __name((value) => value.toString(), "serialize")
|
|
26
|
+
}), "withDefault")
|
|
27
|
+
};
|
|
28
|
+
var asFloat = {
|
|
29
|
+
parse: /* @__PURE__ */ __name((value) => {
|
|
30
|
+
const parsed = Number.parseFloat(value);
|
|
31
|
+
return isNaN(parsed) ? null : parsed;
|
|
32
|
+
}, "parse"),
|
|
33
|
+
serialize: /* @__PURE__ */ __name((value) => value.toString(), "serialize"),
|
|
34
|
+
withDefault: /* @__PURE__ */ __name((defaultValue) => ({
|
|
35
|
+
parse: /* @__PURE__ */ __name((value) => {
|
|
36
|
+
const parsed = Number.parseFloat(value);
|
|
37
|
+
return isNaN(parsed) ? defaultValue : parsed;
|
|
38
|
+
}, "parse"),
|
|
39
|
+
serialize: /* @__PURE__ */ __name((value) => value.toString(), "serialize")
|
|
40
|
+
}), "withDefault")
|
|
41
|
+
};
|
|
42
|
+
var asBoolean = {
|
|
43
|
+
parse: /* @__PURE__ */ __name((value) => {
|
|
44
|
+
if (value === "true") return true;
|
|
45
|
+
if (value === "false") return false;
|
|
46
|
+
return null;
|
|
47
|
+
}, "parse"),
|
|
48
|
+
serialize: /* @__PURE__ */ __name((value) => value.toString(), "serialize"),
|
|
49
|
+
withDefault: /* @__PURE__ */ __name((defaultValue) => ({
|
|
50
|
+
parse: /* @__PURE__ */ __name((value) => {
|
|
51
|
+
if (value === "true") return true;
|
|
52
|
+
if (value === "false") return false;
|
|
53
|
+
return defaultValue;
|
|
54
|
+
}, "parse"),
|
|
55
|
+
serialize: /* @__PURE__ */ __name((value) => value.toString(), "serialize")
|
|
56
|
+
}), "withDefault")
|
|
57
|
+
};
|
|
58
|
+
function asArrayOf(itemParser) {
|
|
59
|
+
return {
|
|
60
|
+
parse: /* @__PURE__ */ __name((value) => {
|
|
61
|
+
if (!value) return null;
|
|
62
|
+
return value.split(",").filter(Boolean).map((item) => itemParser.parse(item.trim())).filter((item) => item !== null);
|
|
63
|
+
}, "parse"),
|
|
64
|
+
serialize: /* @__PURE__ */ __name((value) => value.map((item) => itemParser.serialize(item)).join(","), "serialize"),
|
|
65
|
+
withDefault: /* @__PURE__ */ __name((defaultValue) => ({
|
|
66
|
+
parse: /* @__PURE__ */ __name((value) => {
|
|
67
|
+
if (!value) return defaultValue;
|
|
68
|
+
return value.split(",").filter(Boolean).map((item) => itemParser.parse(item.trim())).filter((item) => item !== null);
|
|
69
|
+
}, "parse"),
|
|
70
|
+
serialize: /* @__PURE__ */ __name((value) => value.map((item) => itemParser.serialize(item)).join(","), "serialize")
|
|
71
|
+
}), "withDefault")
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
__name(asArrayOf, "asArrayOf");
|
|
75
|
+
function asJson() {
|
|
76
|
+
return {
|
|
77
|
+
parse: /* @__PURE__ */ __name((value) => {
|
|
78
|
+
try {
|
|
79
|
+
return JSON.parse(value);
|
|
80
|
+
} catch {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
}, "parse"),
|
|
84
|
+
serialize: /* @__PURE__ */ __name((value) => JSON.stringify(value), "serialize"),
|
|
85
|
+
withDefault: /* @__PURE__ */ __name((defaultValue) => ({
|
|
86
|
+
parse: /* @__PURE__ */ __name((value) => {
|
|
87
|
+
try {
|
|
88
|
+
return JSON.parse(value);
|
|
89
|
+
} catch {
|
|
90
|
+
return defaultValue;
|
|
91
|
+
}
|
|
92
|
+
}, "parse"),
|
|
93
|
+
serialize: /* @__PURE__ */ __name((value) => JSON.stringify(value), "serialize")
|
|
94
|
+
}), "withDefault")
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
__name(asJson, "asJson");
|
|
98
|
+
var asIsoDate = {
|
|
99
|
+
parse: /* @__PURE__ */ __name((value) => {
|
|
100
|
+
const date = new Date(value);
|
|
101
|
+
return isNaN(date.getTime()) ? null : date;
|
|
102
|
+
}, "parse"),
|
|
103
|
+
serialize: /* @__PURE__ */ __name((value) => value.toISOString(), "serialize"),
|
|
104
|
+
withDefault: /* @__PURE__ */ __name((defaultValue) => ({
|
|
105
|
+
parse: /* @__PURE__ */ __name((value) => {
|
|
106
|
+
const date = new Date(value);
|
|
107
|
+
return isNaN(date.getTime()) ? defaultValue : date;
|
|
108
|
+
}, "parse"),
|
|
109
|
+
serialize: /* @__PURE__ */ __name((value) => value.toISOString(), "serialize")
|
|
110
|
+
}), "withDefault")
|
|
111
|
+
};
|
|
112
|
+
var asIsoDateTime = {
|
|
113
|
+
parse: /* @__PURE__ */ __name((value) => {
|
|
114
|
+
const date = new Date(value);
|
|
115
|
+
return isNaN(date.getTime()) ? null : date;
|
|
116
|
+
}, "parse"),
|
|
117
|
+
serialize: /* @__PURE__ */ __name((value) => value.toISOString(), "serialize"),
|
|
118
|
+
withDefault: /* @__PURE__ */ __name((defaultValue) => ({
|
|
119
|
+
parse: /* @__PURE__ */ __name((value) => {
|
|
120
|
+
const date = new Date(value);
|
|
121
|
+
return isNaN(date.getTime()) ? defaultValue : date;
|
|
122
|
+
}, "parse"),
|
|
123
|
+
serialize: /* @__PURE__ */ __name((value) => value.toISOString(), "serialize")
|
|
124
|
+
}), "withDefault")
|
|
125
|
+
};
|
|
126
|
+
function createParser(config) {
|
|
127
|
+
return {
|
|
128
|
+
parse: config.parse,
|
|
129
|
+
serialize: config.serialize,
|
|
130
|
+
withDefault: /* @__PURE__ */ __name((defaultValue) => ({
|
|
131
|
+
parse: /* @__PURE__ */ __name((value) => config.parse(value) ?? defaultValue, "parse"),
|
|
132
|
+
serialize: config.serialize
|
|
133
|
+
}), "withDefault")
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
__name(createParser, "createParser");
|
|
137
|
+
|
|
138
|
+
export {
|
|
139
|
+
asString,
|
|
140
|
+
asInteger,
|
|
141
|
+
asFloat,
|
|
142
|
+
asBoolean,
|
|
143
|
+
asArrayOf,
|
|
144
|
+
asJson,
|
|
145
|
+
asIsoDate,
|
|
146
|
+
asIsoDateTime,
|
|
147
|
+
createParser
|
|
148
|
+
};
|
|
149
|
+
//# sourceMappingURL=chunk-E2MPIBRE.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/query/parsers.ts"],"sourcesContent":["/**\n * Farm.js Query State Parsers\n *\n * Shared parsers that can be used in both client and server contexts\n */\n\nexport interface Parser<T> {\n parse: (value: string) => T | null;\n serialize: (value: T) => string;\n withDefault?: (defaultValue: T) => Parser<T>;\n}\n\n// String parser\nexport const asString: Parser<string> = {\n parse: (value: string) => (value && value.trim()) || null,\n serialize: (value: string) => value,\n withDefault: (defaultValue: string) => ({\n parse: (value: string) => (value && value.trim()) || defaultValue,\n serialize: (value: string) => value || defaultValue,\n }),\n};\n\n// Integer parser\nexport const asInteger: Parser<number> = {\n parse: (value: string) => {\n const parsed = Number.parseInt(value, 10);\n return isNaN(parsed) ? null : parsed;\n },\n serialize: (value: number) => value.toString(),\n withDefault: (defaultValue: number) => ({\n parse: (value: string) => {\n const parsed = Number.parseInt(value, 10);\n return isNaN(parsed) ? defaultValue : parsed;\n },\n serialize: (value: number) => value.toString(),\n }),\n};\n\n// Float parser\nexport const asFloat: Parser<number> = {\n parse: (value: string) => {\n const parsed = Number.parseFloat(value);\n return isNaN(parsed) ? null : parsed;\n },\n serialize: (value: number) => value.toString(),\n withDefault: (defaultValue: number) => ({\n parse: (value: string) => {\n const parsed = Number.parseFloat(value);\n return isNaN(parsed) ? defaultValue : parsed;\n },\n serialize: (value: number) => value.toString(),\n }),\n};\n\n// Boolean parser\nexport const asBoolean: Parser<boolean> = {\n parse: (value: string) => {\n if (value === \"true\") return true;\n if (value === \"false\") return false;\n return null;\n },\n serialize: (value: boolean) => value.toString(),\n withDefault: (defaultValue: boolean) => ({\n parse: (value: string) => {\n if (value === \"true\") return true;\n if (value === \"false\") return false;\n return defaultValue;\n },\n serialize: (value: boolean) => value.toString(),\n }),\n};\n\n// Array parser\nexport function asArrayOf<T>(itemParser: Parser<T>): Parser<T[]> {\n return {\n parse: (value: string) => {\n if (!value) return null;\n return value\n .split(\",\")\n .filter(Boolean)\n .map((item) => itemParser.parse(item.trim()))\n .filter((item) => item !== null) as T[];\n },\n serialize: (value: T[]) => value.map((item) => itemParser.serialize(item)).join(\",\"),\n withDefault: (defaultValue: T[]) => ({\n parse: (value: string) => {\n if (!value) return defaultValue;\n return value\n .split(\",\")\n .filter(Boolean)\n .map((item) => itemParser.parse(item.trim()))\n .filter((item) => item !== null) as T[];\n },\n serialize: (value: T[]) => value.map((item) => itemParser.serialize(item)).join(\",\"),\n }),\n };\n}\n\n// JSON parser\nexport function asJson<T>(): Parser<T> {\n return {\n parse: (value: string) => {\n try {\n return JSON.parse(value);\n } catch {\n return null;\n }\n },\n serialize: (value: T) => JSON.stringify(value),\n withDefault: (defaultValue: T) => ({\n parse: (value: string) => {\n try {\n return JSON.parse(value);\n } catch {\n return defaultValue;\n }\n },\n serialize: (value: T) => JSON.stringify(value),\n }),\n };\n}\n\n// ISO Date parser\nexport const asIsoDate: Parser<Date> = {\n parse: (value: string) => {\n const date = new Date(value);\n return isNaN(date.getTime()) ? null : date;\n },\n serialize: (value: Date) => value.toISOString(),\n withDefault: (defaultValue: Date) => ({\n parse: (value: string) => {\n const date = new Date(value);\n return isNaN(date.getTime()) ? defaultValue : date;\n },\n serialize: (value: Date) => value.toISOString(),\n }),\n};\n\n// ISO DateTime parser\nexport const asIsoDateTime: Parser<Date> = {\n parse: (value: string) => {\n const date = new Date(value);\n return isNaN(date.getTime()) ? null : date;\n },\n serialize: (value: Date) => value.toISOString(),\n withDefault: (defaultValue: Date) => ({\n parse: (value: string) => {\n const date = new Date(value);\n return isNaN(date.getTime()) ? defaultValue : date;\n },\n serialize: (value: Date) => value.toISOString(),\n }),\n};\n\n// Custom parser creator\nexport function createParser<T>(config: {\n parse: (value: string) => T | null;\n serialize: (value: T) => string;\n}): Parser<T> {\n return {\n parse: config.parse,\n serialize: config.serialize,\n withDefault: (defaultValue: T) => ({\n parse: (value: string) => config.parse(value) ?? defaultValue,\n serialize: config.serialize,\n }),\n };\n}\n\n// Type inference helper\nexport type inferParserType<T> = T extends Parser<infer U> ? U : never;\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__name
|
|
3
|
+
} from "./chunk-CGILA3WO.mjs";
|
|
4
|
+
|
|
5
|
+
// src/after.ts
|
|
6
|
+
import { AsyncLocalStorage } from "async_hooks";
|
|
7
|
+
var AFTER_STORAGE = /* @__PURE__ */ Symbol.for("@farm.js/core/after-storage");
|
|
8
|
+
function getAfterStorage() {
|
|
9
|
+
const runtime = globalThis;
|
|
10
|
+
const existing = runtime[AFTER_STORAGE];
|
|
11
|
+
if (existing instanceof AsyncLocalStorage) {
|
|
12
|
+
return existing;
|
|
13
|
+
}
|
|
14
|
+
const storage = new AsyncLocalStorage();
|
|
15
|
+
runtime[AFTER_STORAGE] = storage;
|
|
16
|
+
return storage;
|
|
17
|
+
}
|
|
18
|
+
__name(getAfterStorage, "getAfterStorage");
|
|
19
|
+
var afterStorage = getAfterStorage();
|
|
20
|
+
function defaultAfterErrorReporter(error) {
|
|
21
|
+
console.error("[Farm.js] after() callback failed:", error);
|
|
22
|
+
}
|
|
23
|
+
__name(defaultAfterErrorReporter, "defaultAfterErrorReporter");
|
|
24
|
+
function reportAfterError(state, error) {
|
|
25
|
+
try {
|
|
26
|
+
state.reportError(error);
|
|
27
|
+
} catch {
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
__name(reportAfterError, "reportAfterError");
|
|
31
|
+
function createAfterRequestState(reportError = defaultAfterErrorReporter) {
|
|
32
|
+
let resolveResponseFinished;
|
|
33
|
+
let responseFinished = false;
|
|
34
|
+
const responseFinishedPromise = new Promise((resolve) => {
|
|
35
|
+
resolveResponseFinished = resolve;
|
|
36
|
+
});
|
|
37
|
+
const state = {
|
|
38
|
+
completion: Promise.resolve(),
|
|
39
|
+
finishResponse: /* @__PURE__ */ __name(() => {
|
|
40
|
+
if (responseFinished) return;
|
|
41
|
+
responseFinished = true;
|
|
42
|
+
resolveResponseFinished();
|
|
43
|
+
}, "finishResponse"),
|
|
44
|
+
phase: "open",
|
|
45
|
+
reportError,
|
|
46
|
+
tasks: []
|
|
47
|
+
};
|
|
48
|
+
state.completion = responseFinishedPromise.then(
|
|
49
|
+
() => afterStorage.run(state, async () => {
|
|
50
|
+
state.phase = "running";
|
|
51
|
+
for (let index = 0; index < state.tasks.length; index++) {
|
|
52
|
+
const task = state.tasks[index];
|
|
53
|
+
task.start();
|
|
54
|
+
try {
|
|
55
|
+
await task.result;
|
|
56
|
+
} catch (error) {
|
|
57
|
+
reportAfterError(state, error);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
state.phase = "closed";
|
|
61
|
+
})
|
|
62
|
+
);
|
|
63
|
+
return state;
|
|
64
|
+
}
|
|
65
|
+
__name(createAfterRequestState, "createAfterRequestState");
|
|
66
|
+
function registerPlatformLifetime(state, context) {
|
|
67
|
+
if (!context?.waitUntil) return;
|
|
68
|
+
try {
|
|
69
|
+
context.waitUntil(state.completion);
|
|
70
|
+
} catch (error) {
|
|
71
|
+
reportAfterError(state, error);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
__name(registerPlatformLifetime, "registerPlatformLifetime");
|
|
75
|
+
function registerResponseFinishedHook(state, context) {
|
|
76
|
+
if (!context?.onResponseFinished) return false;
|
|
77
|
+
try {
|
|
78
|
+
context.onResponseFinished(state.finishResponse);
|
|
79
|
+
return true;
|
|
80
|
+
} catch (error) {
|
|
81
|
+
reportAfterError(state, error);
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
__name(registerResponseFinishedHook, "registerResponseFinishedHook");
|
|
86
|
+
function finishSoon(state) {
|
|
87
|
+
setTimeout(state.finishResponse, 0);
|
|
88
|
+
}
|
|
89
|
+
__name(finishSoon, "finishSoon");
|
|
90
|
+
function wrapResponseBody(response, request, state) {
|
|
91
|
+
if (request.method === "HEAD" || response.status < 200 || response.status > 599 || !response.body || response.bodyUsed || response.body.locked) {
|
|
92
|
+
finishSoon(state);
|
|
93
|
+
return response;
|
|
94
|
+
}
|
|
95
|
+
const reader = response.body.getReader();
|
|
96
|
+
let released = false;
|
|
97
|
+
const releaseReader = /* @__PURE__ */ __name(() => {
|
|
98
|
+
if (released) return;
|
|
99
|
+
released = true;
|
|
100
|
+
reader.releaseLock();
|
|
101
|
+
}, "releaseReader");
|
|
102
|
+
const body = new ReadableStream({
|
|
103
|
+
async pull(controller) {
|
|
104
|
+
try {
|
|
105
|
+
const chunk = await reader.read();
|
|
106
|
+
if (chunk.done) {
|
|
107
|
+
releaseReader();
|
|
108
|
+
controller.close();
|
|
109
|
+
finishSoon(state);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
controller.enqueue(chunk.value);
|
|
113
|
+
} catch (error) {
|
|
114
|
+
releaseReader();
|
|
115
|
+
controller.error(error);
|
|
116
|
+
finishSoon(state);
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
async cancel(reason) {
|
|
120
|
+
try {
|
|
121
|
+
await reader.cancel(reason);
|
|
122
|
+
} finally {
|
|
123
|
+
releaseReader();
|
|
124
|
+
finishSoon(state);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
return new Response(body, {
|
|
129
|
+
headers: response.headers,
|
|
130
|
+
status: response.status,
|
|
131
|
+
statusText: response.statusText
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
__name(wrapResponseBody, "wrapResponseBody");
|
|
135
|
+
function after(callback) {
|
|
136
|
+
if (typeof callback !== "function") {
|
|
137
|
+
throw new TypeError("after() expects a callback function.");
|
|
138
|
+
}
|
|
139
|
+
const state = afterStorage.getStore();
|
|
140
|
+
if (!state) {
|
|
141
|
+
throw new Error("after() can only be used while Farm is handling a server request.");
|
|
142
|
+
}
|
|
143
|
+
if (state.phase === "closed") {
|
|
144
|
+
throw new Error("after() cannot schedule work after the request lifecycle has completed.");
|
|
145
|
+
}
|
|
146
|
+
let start;
|
|
147
|
+
const ready = new Promise((resolve) => {
|
|
148
|
+
start = resolve;
|
|
149
|
+
});
|
|
150
|
+
const result = ready.then(callback);
|
|
151
|
+
state.tasks.push({ result, start });
|
|
152
|
+
}
|
|
153
|
+
__name(after, "after");
|
|
154
|
+
async function _runWithAfterRequest(request, handler, context) {
|
|
155
|
+
if (afterStorage.getStore()) {
|
|
156
|
+
return await handler();
|
|
157
|
+
}
|
|
158
|
+
const state = createAfterRequestState();
|
|
159
|
+
registerPlatformLifetime(state, context);
|
|
160
|
+
const hasResponseHook = registerResponseFinishedHook(state, context);
|
|
161
|
+
try {
|
|
162
|
+
const response = await afterStorage.run(state, handler);
|
|
163
|
+
return hasResponseHook ? response : wrapResponseBody(response, request, state);
|
|
164
|
+
} catch (error) {
|
|
165
|
+
if (!hasResponseHook) finishSoon(state);
|
|
166
|
+
throw error;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
__name(_runWithAfterRequest, "_runWithAfterRequest");
|
|
170
|
+
async function _runWithAfterNodeResponse(response, handler, context) {
|
|
171
|
+
if (afterStorage.getStore()) {
|
|
172
|
+
return await handler();
|
|
173
|
+
}
|
|
174
|
+
const state = createAfterRequestState();
|
|
175
|
+
let finished = false;
|
|
176
|
+
const finish = /* @__PURE__ */ __name(() => {
|
|
177
|
+
if (finished) return;
|
|
178
|
+
finished = true;
|
|
179
|
+
response.off("finish", finish);
|
|
180
|
+
response.off("close", finish);
|
|
181
|
+
state.finishResponse();
|
|
182
|
+
}, "finish");
|
|
183
|
+
response.once("finish", finish);
|
|
184
|
+
response.once("close", finish);
|
|
185
|
+
if (response.writableEnded) finishSoon(state);
|
|
186
|
+
registerPlatformLifetime(state, context);
|
|
187
|
+
return await afterStorage.run(state, handler);
|
|
188
|
+
}
|
|
189
|
+
__name(_runWithAfterNodeResponse, "_runWithAfterNodeResponse");
|
|
190
|
+
function _withAfterNodeMiddleware(handler) {
|
|
191
|
+
return async (request, response, next) => {
|
|
192
|
+
await _runWithAfterNodeResponse(response, () => handler(request, response, next));
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
__name(_withAfterNodeMiddleware, "_withAfterNodeMiddleware");
|
|
196
|
+
|
|
197
|
+
export {
|
|
198
|
+
after,
|
|
199
|
+
_runWithAfterRequest,
|
|
200
|
+
_runWithAfterNodeResponse,
|
|
201
|
+
_withAfterNodeMiddleware
|
|
202
|
+
};
|
|
203
|
+
//# sourceMappingURL=chunk-E6EPN5BT.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/after.ts"],"sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { IncomingMessage, ServerResponse } from \"node:http\";\n\nexport type AfterCallback = () => void | Promise<void>;\n\n/** Runtime hooks supplied by a deployment adapter. */\nexport interface FarmAfterPlatformContext {\n /** Keep a serverless invocation alive until the scheduled work settles. */\n waitUntil?: (promise: Promise<void>) => void;\n /** Register a callback that runs once the response has finished. */\n onResponseFinished?: (callback: () => void) => void;\n}\n\ninterface AfterTask {\n result: Promise<void>;\n start: () => void;\n}\n\ninterface AfterRequestState {\n completion: Promise<void>;\n finishResponse: () => void;\n phase: \"open\" | \"running\" | \"closed\";\n reportError: (error: unknown) => void;\n tasks: AfterTask[];\n}\n\nconst AFTER_STORAGE = Symbol.for(\"@farm.js/core/after-storage\");\n\nfunction getAfterStorage(): AsyncLocalStorage<AfterRequestState> {\n const runtime = globalThis as typeof globalThis & Record<PropertyKey, unknown>;\n const existing = runtime[AFTER_STORAGE];\n if (existing instanceof AsyncLocalStorage) {\n return existing as AsyncLocalStorage<AfterRequestState>;\n }\n\n const storage = new AsyncLocalStorage<AfterRequestState>();\n runtime[AFTER_STORAGE] = storage;\n return storage;\n}\n\nconst afterStorage = getAfterStorage();\n\nfunction defaultAfterErrorReporter(error: unknown): void {\n console.error(\"[Farm.js] after() callback failed:\", error);\n}\n\nfunction reportAfterError(state: AfterRequestState, error: unknown): void {\n try {\n state.reportError(error);\n } catch {\n // Error reporting must never interrupt the remaining post-response work.\n }\n}\n\nfunction createAfterRequestState(\n reportError: (error: unknown) => void = defaultAfterErrorReporter,\n): AfterRequestState {\n let resolveResponseFinished!: () => void;\n let responseFinished = false;\n const responseFinishedPromise = new Promise<void>((resolve) => {\n resolveResponseFinished = resolve;\n });\n\n const state: AfterRequestState = {\n completion: Promise.resolve(),\n finishResponse: () => {\n if (responseFinished) return;\n responseFinished = true;\n resolveResponseFinished();\n },\n phase: \"open\",\n reportError,\n tasks: [],\n };\n\n state.completion = responseFinishedPromise.then(() =>\n afterStorage.run(state, async () => {\n state.phase = \"running\";\n\n for (let index = 0; index < state.tasks.length; index++) {\n const task = state.tasks[index];\n task.start();\n try {\n await task.result;\n } catch (error) {\n reportAfterError(state, error);\n }\n }\n\n state.phase = \"closed\";\n }),\n );\n\n return state;\n}\n\nfunction registerPlatformLifetime(\n state: AfterRequestState,\n context: FarmAfterPlatformContext | undefined,\n): void {\n if (!context?.waitUntil) return;\n\n try {\n context.waitUntil(state.completion);\n } catch (error) {\n reportAfterError(state, error);\n }\n}\n\nfunction registerResponseFinishedHook(\n state: AfterRequestState,\n context: FarmAfterPlatformContext | undefined,\n): boolean {\n if (!context?.onResponseFinished) return false;\n\n try {\n context.onResponseFinished(state.finishResponse);\n return true;\n } catch (error) {\n reportAfterError(state, error);\n return false;\n }\n}\n\nfunction finishSoon(state: AfterRequestState): void {\n setTimeout(state.finishResponse, 0);\n}\n\nfunction wrapResponseBody(\n response: Response,\n request: Request,\n state: AfterRequestState,\n): Response {\n if (\n request.method === \"HEAD\" ||\n response.status < 200 ||\n response.status > 599 ||\n !response.body ||\n response.bodyUsed ||\n response.body.locked\n ) {\n finishSoon(state);\n return response;\n }\n\n const reader = response.body.getReader();\n let released = false;\n const releaseReader = () => {\n if (released) return;\n released = true;\n reader.releaseLock();\n };\n\n const body = new ReadableStream<Uint8Array>({\n async pull(controller) {\n try {\n const chunk = await reader.read();\n if (chunk.done) {\n releaseReader();\n controller.close();\n finishSoon(state);\n return;\n }\n controller.enqueue(chunk.value);\n } catch (error) {\n releaseReader();\n controller.error(error);\n finishSoon(state);\n }\n },\n async cancel(reason) {\n try {\n await reader.cancel(reason);\n } finally {\n releaseReader();\n finishSoon(state);\n }\n },\n });\n\n return new Response(body, {\n headers: response.headers,\n status: response.status,\n statusText: response.statusText,\n });\n}\n\n/**\n * Schedule non-blocking work for after the current response finishes.\n *\n * Callbacks run in registration order. A callback failure is reported without\n * changing the response or preventing later callbacks from running.\n */\nexport function after(callback: AfterCallback): void {\n if (typeof callback !== \"function\") {\n throw new TypeError(\"after() expects a callback function.\");\n }\n\n const state = afterStorage.getStore();\n if (!state) {\n throw new Error(\"after() can only be used while Farm is handling a server request.\");\n }\n if (state.phase === \"closed\") {\n throw new Error(\"after() cannot schedule work after the request lifecycle has completed.\");\n }\n\n let start!: () => void;\n const ready = new Promise<void>((resolve) => {\n start = resolve;\n });\n\n // Registering the continuation here preserves every request AsyncLocalStorage\n // context that is active at the after() call site.\n const result = ready.then(callback);\n state.tasks.push({ result, start });\n}\n\n/** @internal Run a Web Request handler inside Farm's post-response lifecycle. */\nexport async function _runWithAfterRequest(\n request: Request,\n handler: () => Response | Promise<Response>,\n context?: FarmAfterPlatformContext,\n): Promise<Response> {\n if (afterStorage.getStore()) {\n return await handler();\n }\n\n const state = createAfterRequestState();\n registerPlatformLifetime(state, context);\n const hasResponseHook = registerResponseFinishedHook(state, context);\n\n try {\n const response = await afterStorage.run(state, handler);\n return hasResponseHook ? response : wrapResponseBody(response, request, state);\n } catch (error) {\n if (!hasResponseHook) finishSoon(state);\n throw error;\n }\n}\n\n/** @internal Run a Node response handler inside Farm's post-response lifecycle. */\nexport async function _runWithAfterNodeResponse<T>(\n response: ServerResponse,\n handler: () => T | Promise<T>,\n context?: Pick<FarmAfterPlatformContext, \"waitUntil\">,\n): Promise<T> {\n if (afterStorage.getStore()) {\n return await handler();\n }\n\n const state = createAfterRequestState();\n let finished = false;\n const finish = () => {\n if (finished) return;\n finished = true;\n response.off(\"finish\", finish);\n response.off(\"close\", finish);\n state.finishResponse();\n };\n\n response.once(\"finish\", finish);\n response.once(\"close\", finish);\n if (response.writableEnded) finishSoon(state);\n registerPlatformLifetime(state, context);\n\n return await afterStorage.run(state, handler);\n}\n\n/** @internal Add Farm's post-response lifecycle to a Node middleware. */\nexport function _withAfterNodeMiddleware(\n handler: (\n request: IncomingMessage,\n response: ServerResponse,\n next: (error?: unknown) => void,\n ) => void | Promise<void>,\n): (\n request: IncomingMessage,\n response: ServerResponse,\n next: (error?: unknown) => void,\n) => Promise<void> {\n return async (request, response, next) => {\n await _runWithAfterNodeResponse(response, () => handler(request, response, next));\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import {
|
|
2
|
+
_runWithCurrentRequest
|
|
3
|
+
} from "./chunk-RHIFZZUI.mjs";
|
|
4
|
+
import {
|
|
5
|
+
__name
|
|
6
|
+
} from "./chunk-CGILA3WO.mjs";
|
|
7
|
+
|
|
8
|
+
// src/api/runtime.ts
|
|
9
|
+
function matchAPIRoute(routes, pathname) {
|
|
10
|
+
const exactRoute = routes.get(pathname);
|
|
11
|
+
if (exactRoute) {
|
|
12
|
+
return { route: exactRoute, params: {} };
|
|
13
|
+
}
|
|
14
|
+
const normalizedPathname = normalizePathname(pathname);
|
|
15
|
+
if (normalizedPathname !== pathname) {
|
|
16
|
+
const normalizedRoute = routes.get(normalizedPathname);
|
|
17
|
+
if (normalizedRoute) {
|
|
18
|
+
return { route: normalizedRoute, params: {} };
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
for (const route of routes.values()) {
|
|
22
|
+
const params = matchRoutePath(route.path, pathname);
|
|
23
|
+
if (params) {
|
|
24
|
+
return { route, params };
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
__name(matchAPIRoute, "matchAPIRoute");
|
|
30
|
+
async function invokeAPIRouteEndpoint(endpoint, request, params = {}) {
|
|
31
|
+
return _runWithCurrentRequest(
|
|
32
|
+
request,
|
|
33
|
+
() => invokeAPIRouteEndpointInContext(endpoint, request, params)
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
__name(invokeAPIRouteEndpoint, "invokeAPIRouteEndpoint");
|
|
37
|
+
async function invokeAPIRouteEndpointInContext(endpoint, request, params) {
|
|
38
|
+
const farmHandler = endpoint.__handler || (isFarmContextHandler(endpoint) ? endpoint : null);
|
|
39
|
+
if (!farmHandler) {
|
|
40
|
+
const result2 = await endpoint(request, {
|
|
41
|
+
params: Promise.resolve(params)
|
|
42
|
+
});
|
|
43
|
+
return normalizeRouteResponse(result2);
|
|
44
|
+
}
|
|
45
|
+
const url = new URL(request.url);
|
|
46
|
+
const query = {};
|
|
47
|
+
url.searchParams.forEach((value, key) => {
|
|
48
|
+
query[key] = value;
|
|
49
|
+
});
|
|
50
|
+
let body = void 0;
|
|
51
|
+
if (request.method.toUpperCase() !== "GET" && request.method.toUpperCase() !== "HEAD") {
|
|
52
|
+
body = await readJSONBody(request);
|
|
53
|
+
}
|
|
54
|
+
const headers = Object.fromEntries(request.headers.entries());
|
|
55
|
+
const types = endpoint.__types || {};
|
|
56
|
+
const queryValidation = validateInput(types.query, query, "Invalid query parameters");
|
|
57
|
+
if (queryValidation instanceof Response) {
|
|
58
|
+
return queryValidation;
|
|
59
|
+
}
|
|
60
|
+
const bodyValidation = validateInput(types.body, body, "Invalid request body");
|
|
61
|
+
if (bodyValidation instanceof Response) {
|
|
62
|
+
return bodyValidation;
|
|
63
|
+
}
|
|
64
|
+
const headersValidation = validateInput(types.headers, headers, "Invalid request headers");
|
|
65
|
+
if (headersValidation instanceof Response) {
|
|
66
|
+
return headersValidation;
|
|
67
|
+
}
|
|
68
|
+
const result = await farmHandler({
|
|
69
|
+
query: queryValidation,
|
|
70
|
+
body: bodyValidation,
|
|
71
|
+
headers: headersValidation,
|
|
72
|
+
request,
|
|
73
|
+
context: {},
|
|
74
|
+
params
|
|
75
|
+
});
|
|
76
|
+
return normalizeRouteResponse(result);
|
|
77
|
+
}
|
|
78
|
+
__name(invokeAPIRouteEndpointInContext, "invokeAPIRouteEndpointInContext");
|
|
79
|
+
function normalizeRouteResponse(result) {
|
|
80
|
+
if (isWebResponse(result)) {
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
83
|
+
if (result === void 0) {
|
|
84
|
+
return new Response(null, { status: 204 });
|
|
85
|
+
}
|
|
86
|
+
return new Response(JSON.stringify(result), {
|
|
87
|
+
status: 200,
|
|
88
|
+
headers: { "Content-Type": "application/json" }
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
__name(normalizeRouteResponse, "normalizeRouteResponse");
|
|
92
|
+
function isWebResponse(value) {
|
|
93
|
+
return value instanceof Response || typeof value === "object" && value !== null && "headers" in value && "status" in value && typeof value.arrayBuffer === "function";
|
|
94
|
+
}
|
|
95
|
+
__name(isWebResponse, "isWebResponse");
|
|
96
|
+
function isFarmContextHandler(endpoint) {
|
|
97
|
+
if (typeof endpoint !== "function") {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
const source = Function.prototype.toString.call(endpoint).trim();
|
|
101
|
+
const arrowMatch = source.match(/^(?:async\s*)?(?:\(([^)]*)\)|([A-Za-z_$][\w$]*))\s*=>/);
|
|
102
|
+
const functionMatch = source.match(/^(?:async\s*)?function[^(]*\(([^)]*)\)/);
|
|
103
|
+
const firstParameter = (arrowMatch?.[1] || arrowMatch?.[2] || functionMatch?.[1] || "").split(",")[0].trim();
|
|
104
|
+
return firstParameter === "ctx" || firstParameter === "context" || firstParameter.startsWith("{");
|
|
105
|
+
}
|
|
106
|
+
__name(isFarmContextHandler, "isFarmContextHandler");
|
|
107
|
+
async function readJSONBody(request) {
|
|
108
|
+
try {
|
|
109
|
+
const text = await request.clone().text();
|
|
110
|
+
if (text) {
|
|
111
|
+
return JSON.parse(text);
|
|
112
|
+
}
|
|
113
|
+
} catch {
|
|
114
|
+
}
|
|
115
|
+
return void 0;
|
|
116
|
+
}
|
|
117
|
+
__name(readJSONBody, "readJSONBody");
|
|
118
|
+
function validateInput(schema, value, error) {
|
|
119
|
+
if (!schema || typeof schema.parse !== "function") {
|
|
120
|
+
return value;
|
|
121
|
+
}
|
|
122
|
+
try {
|
|
123
|
+
return schema.parse(value);
|
|
124
|
+
} catch (validationError) {
|
|
125
|
+
return new Response(
|
|
126
|
+
JSON.stringify({
|
|
127
|
+
error,
|
|
128
|
+
details: validationError.errors || validationError.issues || validationError.message
|
|
129
|
+
}),
|
|
130
|
+
{
|
|
131
|
+
status: 400,
|
|
132
|
+
headers: { "Content-Type": "application/json" }
|
|
133
|
+
}
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
__name(validateInput, "validateInput");
|
|
138
|
+
function matchRoutePath(routePath, pathname) {
|
|
139
|
+
const routeSegments = getPathSegments(routePath);
|
|
140
|
+
const pathnameSegments = getPathSegments(pathname);
|
|
141
|
+
const params = {};
|
|
142
|
+
let pathIndex = 0;
|
|
143
|
+
for (const routeSegment of routeSegments) {
|
|
144
|
+
const dynamicSegment = parseDynamicSegment(routeSegment);
|
|
145
|
+
if (dynamicSegment?.catchAll) {
|
|
146
|
+
const remainingSegments = pathnameSegments.slice(pathIndex).map(decodePathSegment);
|
|
147
|
+
if (remainingSegments.length === 0 && !dynamicSegment.optional) {
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
if (remainingSegments.length > 0) {
|
|
151
|
+
params[dynamicSegment.name] = remainingSegments;
|
|
152
|
+
}
|
|
153
|
+
pathIndex = pathnameSegments.length;
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
const pathnameSegment = pathnameSegments[pathIndex];
|
|
157
|
+
if (pathnameSegment === void 0) {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
if (dynamicSegment) {
|
|
161
|
+
params[dynamicSegment.name] = decodePathSegment(pathnameSegment);
|
|
162
|
+
pathIndex++;
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
if (routeSegment !== pathnameSegment) {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
pathIndex++;
|
|
169
|
+
}
|
|
170
|
+
return pathIndex === pathnameSegments.length ? params : null;
|
|
171
|
+
}
|
|
172
|
+
__name(matchRoutePath, "matchRoutePath");
|
|
173
|
+
function getPathSegments(pathname) {
|
|
174
|
+
return normalizePathname(pathname).split("/").filter((segment) => segment.length > 0);
|
|
175
|
+
}
|
|
176
|
+
__name(getPathSegments, "getPathSegments");
|
|
177
|
+
function normalizePathname(pathname) {
|
|
178
|
+
if (pathname.length > 1 && pathname.endsWith("/")) {
|
|
179
|
+
return pathname.replace(/\/+$/, "");
|
|
180
|
+
}
|
|
181
|
+
return pathname;
|
|
182
|
+
}
|
|
183
|
+
__name(normalizePathname, "normalizePathname");
|
|
184
|
+
function parseDynamicSegment(segment) {
|
|
185
|
+
const optionalCatchAll = segment.match(/^\[\[\.\.\.(.+)\]\]$/);
|
|
186
|
+
if (optionalCatchAll?.[1]) {
|
|
187
|
+
return { name: optionalCatchAll[1], catchAll: true, optional: true };
|
|
188
|
+
}
|
|
189
|
+
const catchAll = segment.match(/^\[\.\.\.(.+)\]$/);
|
|
190
|
+
if (catchAll?.[1]) {
|
|
191
|
+
return { name: catchAll[1], catchAll: true, optional: false };
|
|
192
|
+
}
|
|
193
|
+
const dynamic = segment.match(/^\[(.+)\]$/);
|
|
194
|
+
if (dynamic?.[1]) {
|
|
195
|
+
return { name: dynamic[1], catchAll: false, optional: false };
|
|
196
|
+
}
|
|
197
|
+
return null;
|
|
198
|
+
}
|
|
199
|
+
__name(parseDynamicSegment, "parseDynamicSegment");
|
|
200
|
+
function decodePathSegment(segment) {
|
|
201
|
+
try {
|
|
202
|
+
return decodeURIComponent(segment);
|
|
203
|
+
} catch {
|
|
204
|
+
return segment;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
__name(decodePathSegment, "decodePathSegment");
|
|
208
|
+
|
|
209
|
+
export {
|
|
210
|
+
matchAPIRoute,
|
|
211
|
+
invokeAPIRouteEndpoint,
|
|
212
|
+
normalizeRouteResponse,
|
|
213
|
+
isWebResponse
|
|
214
|
+
};
|
|
215
|
+
//# sourceMappingURL=chunk-EVGBEZDF.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/api/runtime.ts"],"sourcesContent":["import { _runWithCurrentRequest } from \"../server/request\";\n\nexport type APIRouteParamValue = string | string[];\nexport type APIRouteParams = Record<string, APIRouteParamValue>;\n\nexport interface APIRouteMatch<T extends { path: string }> {\n route: T;\n params: APIRouteParams;\n}\n\nexport function matchAPIRoute<T extends { path: string }>(\n routes: Map<string, T>,\n pathname: string,\n): APIRouteMatch<T> | null {\n const exactRoute = routes.get(pathname);\n if (exactRoute) {\n return { route: exactRoute, params: {} };\n }\n\n const normalizedPathname = normalizePathname(pathname);\n if (normalizedPathname !== pathname) {\n const normalizedRoute = routes.get(normalizedPathname);\n if (normalizedRoute) {\n return { route: normalizedRoute, params: {} };\n }\n }\n\n for (const route of routes.values()) {\n const params = matchRoutePath(route.path, pathname);\n if (params) {\n return { route, params };\n }\n }\n\n return null;\n}\n\nexport async function invokeAPIRouteEndpoint(\n endpoint: any,\n request: Request,\n params: APIRouteParams = {},\n): Promise<Response> {\n return _runWithCurrentRequest(request, () =>\n invokeAPIRouteEndpointInContext(endpoint, request, params),\n );\n}\n\nasync function invokeAPIRouteEndpointInContext(\n endpoint: any,\n request: Request,\n params: APIRouteParams,\n): Promise<Response> {\n const farmHandler = endpoint.__handler || (isFarmContextHandler(endpoint) ? endpoint : null);\n\n if (!farmHandler) {\n const result = await endpoint(request, {\n params: Promise.resolve(params),\n });\n return normalizeRouteResponse(result);\n }\n\n const url = new URL(request.url);\n const query: Record<string, string> = {};\n url.searchParams.forEach((value, key) => {\n query[key] = value;\n });\n\n let body: any = undefined;\n if (request.method.toUpperCase() !== \"GET\" && request.method.toUpperCase() !== \"HEAD\") {\n body = await readJSONBody(request);\n }\n\n const headers = Object.fromEntries(request.headers.entries());\n const types = endpoint.__types || {};\n\n const queryValidation = validateInput(types.query, query, \"Invalid query parameters\");\n if (queryValidation instanceof Response) {\n return queryValidation;\n }\n\n const bodyValidation = validateInput(types.body, body, \"Invalid request body\");\n if (bodyValidation instanceof Response) {\n return bodyValidation;\n }\n\n const headersValidation = validateInput(types.headers, headers, \"Invalid request headers\");\n if (headersValidation instanceof Response) {\n return headersValidation;\n }\n\n const result = await farmHandler({\n query: queryValidation,\n body: bodyValidation,\n headers: headersValidation,\n request,\n context: {},\n params,\n });\n\n return normalizeRouteResponse(result);\n}\n\nexport function normalizeRouteResponse(result: unknown): Response {\n if (isWebResponse(result)) {\n return result;\n }\n\n if (result === undefined) {\n return new Response(null, { status: 204 });\n }\n\n return new Response(JSON.stringify(result), {\n status: 200,\n headers: { \"Content-Type\": \"application/json\" },\n });\n}\n\nexport function isWebResponse(value: unknown): value is Response {\n return (\n value instanceof Response ||\n (typeof value === \"object\" &&\n value !== null &&\n \"headers\" in value &&\n \"status\" in value &&\n typeof (value as Response).arrayBuffer === \"function\")\n );\n}\n\nfunction isFarmContextHandler(endpoint: unknown): boolean {\n if (typeof endpoint !== \"function\") {\n return false;\n }\n\n const source = Function.prototype.toString.call(endpoint).trim();\n const arrowMatch = source.match(/^(?:async\\s*)?(?:\\(([^)]*)\\)|([A-Za-z_$][\\w$]*))\\s*=>/);\n const functionMatch = source.match(/^(?:async\\s*)?function[^(]*\\(([^)]*)\\)/);\n const firstParameter = (arrowMatch?.[1] || arrowMatch?.[2] || functionMatch?.[1] || \"\")\n .split(\",\")[0]\n .trim();\n\n return firstParameter === \"ctx\" || firstParameter === \"context\" || firstParameter.startsWith(\"{\");\n}\n\nasync function readJSONBody(request: Request): Promise<unknown> {\n try {\n const text = await request.clone().text();\n if (text) {\n return JSON.parse(text);\n }\n } catch {\n // Body might not be JSON.\n }\n\n return undefined;\n}\n\nfunction validateInput(schema: any, value: unknown, error: string): unknown | Response {\n if (!schema || typeof schema.parse !== \"function\") {\n return value;\n }\n\n try {\n return schema.parse(value);\n } catch (validationError: any) {\n return new Response(\n JSON.stringify({\n error,\n details: validationError.errors || validationError.issues || validationError.message,\n }),\n {\n status: 400,\n headers: { \"Content-Type\": \"application/json\" },\n },\n );\n }\n}\n\nfunction matchRoutePath(routePath: string, pathname: string): APIRouteParams | null {\n const routeSegments = getPathSegments(routePath);\n const pathnameSegments = getPathSegments(pathname);\n const params: APIRouteParams = {};\n let pathIndex = 0;\n\n for (const routeSegment of routeSegments) {\n const dynamicSegment = parseDynamicSegment(routeSegment);\n\n if (dynamicSegment?.catchAll) {\n const remainingSegments = pathnameSegments.slice(pathIndex).map(decodePathSegment);\n if (remainingSegments.length === 0 && !dynamicSegment.optional) {\n return null;\n }\n if (remainingSegments.length > 0) {\n params[dynamicSegment.name] = remainingSegments;\n }\n pathIndex = pathnameSegments.length;\n continue;\n }\n\n const pathnameSegment = pathnameSegments[pathIndex];\n if (pathnameSegment === undefined) {\n return null;\n }\n\n if (dynamicSegment) {\n params[dynamicSegment.name] = decodePathSegment(pathnameSegment);\n pathIndex++;\n continue;\n }\n\n if (routeSegment !== pathnameSegment) {\n return null;\n }\n\n pathIndex++;\n }\n\n return pathIndex === pathnameSegments.length ? params : null;\n}\n\nfunction getPathSegments(pathname: string): string[] {\n return normalizePathname(pathname)\n .split(\"/\")\n .filter((segment) => segment.length > 0);\n}\n\nfunction normalizePathname(pathname: string): string {\n if (pathname.length > 1 && pathname.endsWith(\"/\")) {\n return pathname.replace(/\\/+$/, \"\");\n }\n\n return pathname;\n}\n\nfunction parseDynamicSegment(\n segment: string,\n): { name: string; catchAll: boolean; optional: boolean } | null {\n const optionalCatchAll = segment.match(/^\\[\\[\\.\\.\\.(.+)\\]\\]$/);\n if (optionalCatchAll?.[1]) {\n return { name: optionalCatchAll[1], catchAll: true, optional: true };\n }\n\n const catchAll = segment.match(/^\\[\\.\\.\\.(.+)\\]$/);\n if (catchAll?.[1]) {\n return { name: catchAll[1], catchAll: true, optional: false };\n }\n\n const dynamic = segment.match(/^\\[(.+)\\]$/);\n if (dynamic?.[1]) {\n return { name: dynamic[1], catchAll: false, optional: false };\n }\n\n return null;\n}\n\nfunction decodePathSegment(segment: string): string {\n try {\n return decodeURIComponent(segment);\n } catch {\n return segment;\n }\n}\n"],"mappings":";;;;;;;;AAUO,SAAS,cACd,QACA,UACyB;AACzB,QAAM,aAAa,OAAO,IAAI,QAAQ;AACtC,MAAI,YAAY;AACd,WAAO,EAAE,OAAO,YAAY,QAAQ,CAAC,EAAE;AAAA,EACzC;AAEA,QAAM,qBAAqB,kBAAkB,QAAQ;AACrD,MAAI,uBAAuB,UAAU;AACnC,UAAM,kBAAkB,OAAO,IAAI,kBAAkB;AACrD,QAAI,iBAAiB;AACnB,aAAO,EAAE,OAAO,iBAAiB,QAAQ,CAAC,EAAE;AAAA,IAC9C;AAAA,EACF;AAEA,aAAW,SAAS,OAAO,OAAO,GAAG;AACnC,UAAM,SAAS,eAAe,MAAM,MAAM,QAAQ;AAClD,QAAI,QAAQ;AACV,aAAO,EAAE,OAAO,OAAO;AAAA,IACzB;AAAA,EACF;AAEA,SAAO;AACT;AAzBgB;AA2BhB,eAAsB,uBACpB,UACA,SACA,SAAyB,CAAC,GACP;AACnB,SAAO;AAAA,IAAuB;AAAA,IAAS,MACrC,gCAAgC,UAAU,SAAS,MAAM;AAAA,EAC3D;AACF;AARsB;AAUtB,eAAe,gCACb,UACA,SACA,QACmB;AACnB,QAAM,cAAc,SAAS,cAAc,qBAAqB,QAAQ,IAAI,WAAW;AAEvF,MAAI,CAAC,aAAa;AAChB,UAAMA,UAAS,MAAM,SAAS,SAAS;AAAA,MACrC,QAAQ,QAAQ,QAAQ,MAAM;AAAA,IAChC,CAAC;AACD,WAAO,uBAAuBA,OAAM;AAAA,EACtC;AAEA,QAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAC/B,QAAM,QAAgC,CAAC;AACvC,MAAI,aAAa,QAAQ,CAAC,OAAO,QAAQ;AACvC,UAAM,GAAG,IAAI;AAAA,EACf,CAAC;AAED,MAAI,OAAY;AAChB,MAAI,QAAQ,OAAO,YAAY,MAAM,SAAS,QAAQ,OAAO,YAAY,MAAM,QAAQ;AACrF,WAAO,MAAM,aAAa,OAAO;AAAA,EACnC;AAEA,QAAM,UAAU,OAAO,YAAY,QAAQ,QAAQ,QAAQ,CAAC;AAC5D,QAAM,QAAQ,SAAS,WAAW,CAAC;AAEnC,QAAM,kBAAkB,cAAc,MAAM,OAAO,OAAO,0BAA0B;AACpF,MAAI,2BAA2B,UAAU;AACvC,WAAO;AAAA,EACT;AAEA,QAAM,iBAAiB,cAAc,MAAM,MAAM,MAAM,sBAAsB;AAC7E,MAAI,0BAA0B,UAAU;AACtC,WAAO;AAAA,EACT;AAEA,QAAM,oBAAoB,cAAc,MAAM,SAAS,SAAS,yBAAyB;AACzF,MAAI,6BAA6B,UAAU;AACzC,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,MAAM,YAAY;AAAA,IAC/B,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,IACT;AAAA,IACA,SAAS,CAAC;AAAA,IACV;AAAA,EACF,CAAC;AAED,SAAO,uBAAuB,MAAM;AACtC;AArDe;AAuDR,SAAS,uBAAuB,QAA2B;AAChE,MAAI,cAAc,MAAM,GAAG;AACzB,WAAO;AAAA,EACT;AAEA,MAAI,WAAW,QAAW;AACxB,WAAO,IAAI,SAAS,MAAM,EAAE,QAAQ,IAAI,CAAC;AAAA,EAC3C;AAEA,SAAO,IAAI,SAAS,KAAK,UAAU,MAAM,GAAG;AAAA,IAC1C,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,EAChD,CAAC;AACH;AAbgB;AAeT,SAAS,cAAc,OAAmC;AAC/D,SACE,iBAAiB,YAChB,OAAO,UAAU,YAChB,UAAU,QACV,aAAa,SACb,YAAY,SACZ,OAAQ,MAAmB,gBAAgB;AAEjD;AATgB;AAWhB,SAAS,qBAAqB,UAA4B;AACxD,MAAI,OAAO,aAAa,YAAY;AAClC,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,SAAS,UAAU,SAAS,KAAK,QAAQ,EAAE,KAAK;AAC/D,QAAM,aAAa,OAAO,MAAM,uDAAuD;AACvF,QAAM,gBAAgB,OAAO,MAAM,wCAAwC;AAC3E,QAAM,kBAAkB,aAAa,CAAC,KAAK,aAAa,CAAC,KAAK,gBAAgB,CAAC,KAAK,IACjF,MAAM,GAAG,EAAE,CAAC,EACZ,KAAK;AAER,SAAO,mBAAmB,SAAS,mBAAmB,aAAa,eAAe,WAAW,GAAG;AAClG;AAbS;AAeT,eAAe,aAAa,SAAoC;AAC9D,MAAI;AACF,UAAM,OAAO,MAAM,QAAQ,MAAM,EAAE,KAAK;AACxC,QAAI,MAAM;AACR,aAAO,KAAK,MAAM,IAAI;AAAA,IACxB;AAAA,EACF,QAAQ;AAAA,EAER;AAEA,SAAO;AACT;AAXe;AAaf,SAAS,cAAc,QAAa,OAAgB,OAAmC;AACrF,MAAI,CAAC,UAAU,OAAO,OAAO,UAAU,YAAY;AACjD,WAAO;AAAA,EACT;AAEA,MAAI;AACF,WAAO,OAAO,MAAM,KAAK;AAAA,EAC3B,SAAS,iBAAsB;AAC7B,WAAO,IAAI;AAAA,MACT,KAAK,UAAU;AAAA,QACb;AAAA,QACA,SAAS,gBAAgB,UAAU,gBAAgB,UAAU,gBAAgB;AAAA,MAC/E,CAAC;AAAA,MACD;AAAA,QACE,QAAQ;AAAA,QACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,MAChD;AAAA,IACF;AAAA,EACF;AACF;AAnBS;AAqBT,SAAS,eAAe,WAAmB,UAAyC;AAClF,QAAM,gBAAgB,gBAAgB,SAAS;AAC/C,QAAM,mBAAmB,gBAAgB,QAAQ;AACjD,QAAM,SAAyB,CAAC;AAChC,MAAI,YAAY;AAEhB,aAAW,gBAAgB,eAAe;AACxC,UAAM,iBAAiB,oBAAoB,YAAY;AAEvD,QAAI,gBAAgB,UAAU;AAC5B,YAAM,oBAAoB,iBAAiB,MAAM,SAAS,EAAE,IAAI,iBAAiB;AACjF,UAAI,kBAAkB,WAAW,KAAK,CAAC,eAAe,UAAU;AAC9D,eAAO;AAAA,MACT;AACA,UAAI,kBAAkB,SAAS,GAAG;AAChC,eAAO,eAAe,IAAI,IAAI;AAAA,MAChC;AACA,kBAAY,iBAAiB;AAC7B;AAAA,IACF;AAEA,UAAM,kBAAkB,iBAAiB,SAAS;AAClD,QAAI,oBAAoB,QAAW;AACjC,aAAO;AAAA,IACT;AAEA,QAAI,gBAAgB;AAClB,aAAO,eAAe,IAAI,IAAI,kBAAkB,eAAe;AAC/D;AACA;AAAA,IACF;AAEA,QAAI,iBAAiB,iBAAiB;AACpC,aAAO;AAAA,IACT;AAEA;AAAA,EACF;AAEA,SAAO,cAAc,iBAAiB,SAAS,SAAS;AAC1D;AAxCS;AA0CT,SAAS,gBAAgB,UAA4B;AACnD,SAAO,kBAAkB,QAAQ,EAC9B,MAAM,GAAG,EACT,OAAO,CAAC,YAAY,QAAQ,SAAS,CAAC;AAC3C;AAJS;AAMT,SAAS,kBAAkB,UAA0B;AACnD,MAAI,SAAS,SAAS,KAAK,SAAS,SAAS,GAAG,GAAG;AACjD,WAAO,SAAS,QAAQ,QAAQ,EAAE;AAAA,EACpC;AAEA,SAAO;AACT;AANS;AAQT,SAAS,oBACP,SAC+D;AAC/D,QAAM,mBAAmB,QAAQ,MAAM,sBAAsB;AAC7D,MAAI,mBAAmB,CAAC,GAAG;AACzB,WAAO,EAAE,MAAM,iBAAiB,CAAC,GAAG,UAAU,MAAM,UAAU,KAAK;AAAA,EACrE;AAEA,QAAM,WAAW,QAAQ,MAAM,kBAAkB;AACjD,MAAI,WAAW,CAAC,GAAG;AACjB,WAAO,EAAE,MAAM,SAAS,CAAC,GAAG,UAAU,MAAM,UAAU,MAAM;AAAA,EAC9D;AAEA,QAAM,UAAU,QAAQ,MAAM,YAAY;AAC1C,MAAI,UAAU,CAAC,GAAG;AAChB,WAAO,EAAE,MAAM,QAAQ,CAAC,GAAG,UAAU,OAAO,UAAU,MAAM;AAAA,EAC9D;AAEA,SAAO;AACT;AAnBS;AAqBT,SAAS,kBAAkB,SAAyB;AAClD,MAAI;AACF,WAAO,mBAAmB,OAAO;AAAA,EACnC,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AANS;","names":["result"]}
|