@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,61 @@
|
|
|
1
|
+
export { R as RouteParamsInput, l as loadRouteParams, p as parseRouteParams } from '../params-ry-lxqmy.mjs';
|
|
2
|
+
import { Parser } from './parsers.mjs';
|
|
3
|
+
export { asArrayOf, asBoolean, asFloat, asInteger, asIsoDate, asIsoDateTime, asJson, asString, createParser, inferParserType } from './parsers.mjs';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Farm.js Client-Side Query State Management
|
|
7
|
+
*
|
|
8
|
+
* Type-safe URL search parameter state management - Like useState, but stored in the URL query string.
|
|
9
|
+
* Client-only hooks for managing query parameters in the browser.
|
|
10
|
+
* Inspired by nuqs implementation patterns.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
type UrlUpdateType = "push" | "replace";
|
|
14
|
+
type HistoryMethod = "pushState" | "replaceState";
|
|
15
|
+
interface Options {
|
|
16
|
+
history?: HistoryMethod;
|
|
17
|
+
shallow?: boolean;
|
|
18
|
+
scroll?: boolean;
|
|
19
|
+
throttleMs?: number;
|
|
20
|
+
}
|
|
21
|
+
declare function useQueryState<TParser extends Parser<any>>(key: string, parser: TParser, options?: Options): [
|
|
22
|
+
NonNullable<ReturnType<TParser["parse"]>> | null,
|
|
23
|
+
(value: NonNullable<ReturnType<TParser["parse"]>> | null) => void
|
|
24
|
+
];
|
|
25
|
+
declare function useQueryState<T>(key: string, parser: Parser<T>, options?: Options): [T | null, (value: T | null) => void];
|
|
26
|
+
declare function useQueryStates<T extends Record<string, Parser<any>>>(parsers: T, options?: Options): [
|
|
27
|
+
{
|
|
28
|
+
[K in keyof T]: ReturnType<T[K]["parse"]>;
|
|
29
|
+
},
|
|
30
|
+
(updates: Partial<{
|
|
31
|
+
[K in keyof T]: ReturnType<T[K]["parse"]> | null;
|
|
32
|
+
}>) => void
|
|
33
|
+
];
|
|
34
|
+
declare function usePagination(options?: {
|
|
35
|
+
defaultPage?: number;
|
|
36
|
+
defaultLimit?: number;
|
|
37
|
+
pageKey?: string;
|
|
38
|
+
limitKey?: string;
|
|
39
|
+
}): {
|
|
40
|
+
page: number;
|
|
41
|
+
setPage: (value: number | null) => void;
|
|
42
|
+
limit: number;
|
|
43
|
+
setLimit: (value: number | null) => void;
|
|
44
|
+
offset: number;
|
|
45
|
+
resetPagination: () => void;
|
|
46
|
+
};
|
|
47
|
+
declare function useSearchFilters<T extends Record<string, any>>(options?: {
|
|
48
|
+
searchKey?: string;
|
|
49
|
+
defaultFilters?: T;
|
|
50
|
+
filterKeys?: (keyof T)[];
|
|
51
|
+
}): {
|
|
52
|
+
search: string | null;
|
|
53
|
+
setSearch: (value: string | null) => void;
|
|
54
|
+
filters: T;
|
|
55
|
+
setFilters: (updates: Partial<{
|
|
56
|
+
[x: string]: string | null;
|
|
57
|
+
}>) => void;
|
|
58
|
+
clearFilters: () => void;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
export { type HistoryMethod, type Options, Parser, type UrlUpdateType, usePagination, useQueryState, useQueryStates, useSearchFilters };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export { R as RouteParamsInput, l as loadRouteParams, p as parseRouteParams } from '../params-BALtrRim.js';
|
|
2
|
+
import { Parser } from './parsers.js';
|
|
3
|
+
export { asArrayOf, asBoolean, asFloat, asInteger, asIsoDate, asIsoDateTime, asJson, asString, createParser, inferParserType } from './parsers.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Farm.js Client-Side Query State Management
|
|
7
|
+
*
|
|
8
|
+
* Type-safe URL search parameter state management - Like useState, but stored in the URL query string.
|
|
9
|
+
* Client-only hooks for managing query parameters in the browser.
|
|
10
|
+
* Inspired by nuqs implementation patterns.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
type UrlUpdateType = "push" | "replace";
|
|
14
|
+
type HistoryMethod = "pushState" | "replaceState";
|
|
15
|
+
interface Options {
|
|
16
|
+
history?: HistoryMethod;
|
|
17
|
+
shallow?: boolean;
|
|
18
|
+
scroll?: boolean;
|
|
19
|
+
throttleMs?: number;
|
|
20
|
+
}
|
|
21
|
+
declare function useQueryState<TParser extends Parser<any>>(key: string, parser: TParser, options?: Options): [
|
|
22
|
+
NonNullable<ReturnType<TParser["parse"]>> | null,
|
|
23
|
+
(value: NonNullable<ReturnType<TParser["parse"]>> | null) => void
|
|
24
|
+
];
|
|
25
|
+
declare function useQueryState<T>(key: string, parser: Parser<T>, options?: Options): [T | null, (value: T | null) => void];
|
|
26
|
+
declare function useQueryStates<T extends Record<string, Parser<any>>>(parsers: T, options?: Options): [
|
|
27
|
+
{
|
|
28
|
+
[K in keyof T]: ReturnType<T[K]["parse"]>;
|
|
29
|
+
},
|
|
30
|
+
(updates: Partial<{
|
|
31
|
+
[K in keyof T]: ReturnType<T[K]["parse"]> | null;
|
|
32
|
+
}>) => void
|
|
33
|
+
];
|
|
34
|
+
declare function usePagination(options?: {
|
|
35
|
+
defaultPage?: number;
|
|
36
|
+
defaultLimit?: number;
|
|
37
|
+
pageKey?: string;
|
|
38
|
+
limitKey?: string;
|
|
39
|
+
}): {
|
|
40
|
+
page: number;
|
|
41
|
+
setPage: (value: number | null) => void;
|
|
42
|
+
limit: number;
|
|
43
|
+
setLimit: (value: number | null) => void;
|
|
44
|
+
offset: number;
|
|
45
|
+
resetPagination: () => void;
|
|
46
|
+
};
|
|
47
|
+
declare function useSearchFilters<T extends Record<string, any>>(options?: {
|
|
48
|
+
searchKey?: string;
|
|
49
|
+
defaultFilters?: T;
|
|
50
|
+
filterKeys?: (keyof T)[];
|
|
51
|
+
}): {
|
|
52
|
+
search: string | null;
|
|
53
|
+
setSearch: (value: string | null) => void;
|
|
54
|
+
filters: T;
|
|
55
|
+
setFilters: (updates: Partial<{
|
|
56
|
+
[x: string]: string | null;
|
|
57
|
+
}>) => void;
|
|
58
|
+
clearFilters: () => void;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
export { type HistoryMethod, type Options, Parser, type UrlUpdateType, usePagination, useQueryState, useQueryStates, useSearchFilters };
|
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
import {
|
|
2
|
+
loadRouteParams,
|
|
3
|
+
parseRouteParams
|
|
4
|
+
} from "../chunk-H2FA2SBS.mjs";
|
|
5
|
+
import {
|
|
6
|
+
asArrayOf,
|
|
7
|
+
asBoolean,
|
|
8
|
+
asFloat,
|
|
9
|
+
asInteger,
|
|
10
|
+
asIsoDate,
|
|
11
|
+
asIsoDateTime,
|
|
12
|
+
asJson,
|
|
13
|
+
asString,
|
|
14
|
+
createParser
|
|
15
|
+
} from "../chunk-E2MPIBRE.mjs";
|
|
16
|
+
import {
|
|
17
|
+
__name
|
|
18
|
+
} from "../chunk-CGILA3WO.mjs";
|
|
19
|
+
|
|
20
|
+
// src/query/client.ts
|
|
21
|
+
import { useState, useEffect, useCallback, useRef } from "react";
|
|
22
|
+
|
|
23
|
+
// src/query/sync.ts
|
|
24
|
+
var _Emitter = class _Emitter {
|
|
25
|
+
constructor() {
|
|
26
|
+
this.listeners = /* @__PURE__ */ new Map();
|
|
27
|
+
this.keyListeners = /* @__PURE__ */ new Map();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Emit a global update event (all hooks should sync)
|
|
31
|
+
*/
|
|
32
|
+
emitUpdate(searchParams) {
|
|
33
|
+
const listeners = this.listeners.get("update") || /* @__PURE__ */ new Set();
|
|
34
|
+
listeners.forEach((listener) => listener(searchParams));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Emit a key-specific update (for cross-hook sync)
|
|
38
|
+
*/
|
|
39
|
+
emitKey(key, payload) {
|
|
40
|
+
const listeners = this.keyListeners.get(key) || /* @__PURE__ */ new Set();
|
|
41
|
+
listeners.forEach((listener) => listener(payload));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Subscribe to global updates
|
|
45
|
+
*/
|
|
46
|
+
on(event, listener) {
|
|
47
|
+
if (!this.listeners.has(event)) {
|
|
48
|
+
this.listeners.set(event, /* @__PURE__ */ new Set());
|
|
49
|
+
}
|
|
50
|
+
this.listeners.get(event).add(listener);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Subscribe to key-specific updates
|
|
54
|
+
*/
|
|
55
|
+
onKey(key, listener) {
|
|
56
|
+
if (!this.keyListeners.has(key)) {
|
|
57
|
+
this.keyListeners.set(key, /* @__PURE__ */ new Set());
|
|
58
|
+
}
|
|
59
|
+
this.keyListeners.get(key).add(listener);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Unsubscribe from global updates
|
|
63
|
+
*/
|
|
64
|
+
off(event, listener) {
|
|
65
|
+
const listeners = this.listeners.get(event);
|
|
66
|
+
if (listeners) {
|
|
67
|
+
listeners.delete(listener);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Unsubscribe from key-specific updates
|
|
72
|
+
*/
|
|
73
|
+
offKey(key, listener) {
|
|
74
|
+
const listeners = this.keyListeners.get(key);
|
|
75
|
+
if (listeners) {
|
|
76
|
+
listeners.delete(listener);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
__name(_Emitter, "Emitter");
|
|
81
|
+
var Emitter = _Emitter;
|
|
82
|
+
var emitter = new Emitter();
|
|
83
|
+
|
|
84
|
+
// src/query/client.ts
|
|
85
|
+
var getCurrentSearchParams = /* @__PURE__ */ __name(() => {
|
|
86
|
+
if (typeof window === "undefined") return new URLSearchParams();
|
|
87
|
+
return new URLSearchParams(window.location.search);
|
|
88
|
+
}, "getCurrentSearchParams");
|
|
89
|
+
var throttleTimers = /* @__PURE__ */ new Map();
|
|
90
|
+
var applyChange = /* @__PURE__ */ __name((searchParams, updates, keepExisting = true) => {
|
|
91
|
+
const newParams = keepExisting ? new URLSearchParams(searchParams) : new URLSearchParams();
|
|
92
|
+
Object.entries(updates).forEach(([key, value]) => {
|
|
93
|
+
if (value === null || value === void 0 || value === "") {
|
|
94
|
+
newParams.delete(key);
|
|
95
|
+
} else {
|
|
96
|
+
newParams.set(key, value);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
return newParams;
|
|
100
|
+
}, "applyChange");
|
|
101
|
+
var updateURL = /* @__PURE__ */ __name((updates, options = {}, emitUpdate = true) => {
|
|
102
|
+
if (typeof window === "undefined") return;
|
|
103
|
+
const { history = "pushState", shallow = true, scroll = false, throttleMs } = options;
|
|
104
|
+
const url = new URL(window.location.href);
|
|
105
|
+
const newSearchParams = applyChange(new URLSearchParams(url.search), updates);
|
|
106
|
+
const newSearch = newSearchParams.toString();
|
|
107
|
+
const newUrl = url.pathname + (newSearch ? `?${newSearch}` : "") + url.hash;
|
|
108
|
+
const currentUrl = window.location.pathname + (window.location.search || "") + window.location.hash;
|
|
109
|
+
if (newUrl !== currentUrl) {
|
|
110
|
+
const update = /* @__PURE__ */ __name(() => {
|
|
111
|
+
if (history === "replaceState") {
|
|
112
|
+
window.history.replaceState(null, "", newUrl);
|
|
113
|
+
} else {
|
|
114
|
+
window.history.pushState(null, "", newUrl);
|
|
115
|
+
}
|
|
116
|
+
if (emitUpdate) {
|
|
117
|
+
const actualSearchParams = new URLSearchParams(window.location.search);
|
|
118
|
+
emitter.emitUpdate(actualSearchParams);
|
|
119
|
+
}
|
|
120
|
+
if (shallow) {
|
|
121
|
+
setTimeout(() => {
|
|
122
|
+
window.dispatchEvent(new PopStateEvent("popstate"));
|
|
123
|
+
}, 0);
|
|
124
|
+
}
|
|
125
|
+
if (scroll) {
|
|
126
|
+
window.scrollTo(0, 0);
|
|
127
|
+
}
|
|
128
|
+
}, "update");
|
|
129
|
+
if (throttleMs && throttleMs > 0) {
|
|
130
|
+
const throttleKey = Object.keys(updates).sort().join(",");
|
|
131
|
+
const existingTimeout = throttleTimers.get(throttleKey);
|
|
132
|
+
if (existingTimeout) {
|
|
133
|
+
clearTimeout(existingTimeout);
|
|
134
|
+
}
|
|
135
|
+
const timeout = setTimeout(() => {
|
|
136
|
+
update();
|
|
137
|
+
throttleTimers.delete(throttleKey);
|
|
138
|
+
}, throttleMs);
|
|
139
|
+
throttleTimers.set(throttleKey, timeout);
|
|
140
|
+
} else {
|
|
141
|
+
update();
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}, "updateURL");
|
|
145
|
+
function useQueryState(key, parser, options) {
|
|
146
|
+
const [state, setState] = useState(() => {
|
|
147
|
+
if (typeof window === "undefined") return parser.parse("");
|
|
148
|
+
const searchParams = getCurrentSearchParams();
|
|
149
|
+
const value = searchParams.get(key);
|
|
150
|
+
const parsed = parser.parse(value ?? "");
|
|
151
|
+
return parsed;
|
|
152
|
+
});
|
|
153
|
+
const stateRef = useRef(state);
|
|
154
|
+
const isInternalUpdateRef = useRef(false);
|
|
155
|
+
stateRef.current = state;
|
|
156
|
+
const setValue = useCallback(
|
|
157
|
+
(value) => {
|
|
158
|
+
isInternalUpdateRef.current = true;
|
|
159
|
+
setState(value);
|
|
160
|
+
stateRef.current = value;
|
|
161
|
+
const serialized = value === null ? null : parser.serialize(value);
|
|
162
|
+
emitter.emitKey(key, { state: value, query: serialized });
|
|
163
|
+
updateURL({ [key]: serialized }, options, true);
|
|
164
|
+
setTimeout(() => {
|
|
165
|
+
isInternalUpdateRef.current = false;
|
|
166
|
+
}, 10);
|
|
167
|
+
},
|
|
168
|
+
[key, parser, options]
|
|
169
|
+
);
|
|
170
|
+
useEffect(() => {
|
|
171
|
+
if (typeof window === "undefined") return;
|
|
172
|
+
const onPopState = /* @__PURE__ */ __name(() => {
|
|
173
|
+
const searchParams = getCurrentSearchParams();
|
|
174
|
+
const value = searchParams.get(key);
|
|
175
|
+
const parsed = parser.parse(value ?? "");
|
|
176
|
+
if (!Object.is(stateRef.current, parsed)) {
|
|
177
|
+
setState(parsed);
|
|
178
|
+
stateRef.current = parsed;
|
|
179
|
+
}
|
|
180
|
+
}, "onPopState");
|
|
181
|
+
const onEmitterUpdate = /* @__PURE__ */ __name((searchParams) => {
|
|
182
|
+
if (isInternalUpdateRef.current) {
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
const value = searchParams.get(key);
|
|
186
|
+
const parsed = parser.parse(value ?? "");
|
|
187
|
+
if (!Object.is(stateRef.current, parsed)) {
|
|
188
|
+
setState(parsed);
|
|
189
|
+
stateRef.current = parsed;
|
|
190
|
+
}
|
|
191
|
+
}, "onEmitterUpdate");
|
|
192
|
+
const onKeyUpdate = /* @__PURE__ */ __name((payload) => {
|
|
193
|
+
if (isInternalUpdateRef.current) {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
if (!Object.is(stateRef.current, payload.state)) {
|
|
197
|
+
setState(payload.state);
|
|
198
|
+
stateRef.current = payload.state;
|
|
199
|
+
}
|
|
200
|
+
}, "onKeyUpdate");
|
|
201
|
+
window.addEventListener("popstate", onPopState);
|
|
202
|
+
emitter.on("update", onEmitterUpdate);
|
|
203
|
+
emitter.onKey(key, onKeyUpdate);
|
|
204
|
+
return () => {
|
|
205
|
+
window.removeEventListener("popstate", onPopState);
|
|
206
|
+
emitter.off("update", onEmitterUpdate);
|
|
207
|
+
emitter.offKey(key, onKeyUpdate);
|
|
208
|
+
};
|
|
209
|
+
}, [key, parser]);
|
|
210
|
+
return [state, setValue];
|
|
211
|
+
}
|
|
212
|
+
__name(useQueryState, "useQueryState");
|
|
213
|
+
function useQueryStates(parsers, options = {}) {
|
|
214
|
+
const keys = Object.keys(parsers);
|
|
215
|
+
const watchKeys = keys.join("&");
|
|
216
|
+
const [state, setState] = useState(() => {
|
|
217
|
+
const searchParams = typeof window === "undefined" ? new URLSearchParams() : getCurrentSearchParams();
|
|
218
|
+
const result = {};
|
|
219
|
+
Object.entries(parsers).forEach(([key, parser]) => {
|
|
220
|
+
const value = searchParams.get(key);
|
|
221
|
+
result[key] = parser.parse(value ?? "");
|
|
222
|
+
});
|
|
223
|
+
return result;
|
|
224
|
+
});
|
|
225
|
+
const stateRef = useRef(state);
|
|
226
|
+
stateRef.current = state;
|
|
227
|
+
const setValues = useCallback(
|
|
228
|
+
(updates) => {
|
|
229
|
+
const newState = { ...stateRef.current, ...updates };
|
|
230
|
+
setState(newState);
|
|
231
|
+
stateRef.current = newState;
|
|
232
|
+
Object.entries(updates).forEach(([key, value]) => {
|
|
233
|
+
const parser = parsers[key];
|
|
234
|
+
if (parser) {
|
|
235
|
+
const serialized = value === null ? null : parser.serialize(value);
|
|
236
|
+
emitter.emitKey(key, { state: value, query: serialized });
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
const urlUpdates = {};
|
|
240
|
+
Object.entries(updates).forEach(([key, value]) => {
|
|
241
|
+
const parser = parsers[key];
|
|
242
|
+
if (parser) {
|
|
243
|
+
const serialized = value === null ? null : parser.serialize(value);
|
|
244
|
+
urlUpdates[key] = serialized;
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
updateURL(urlUpdates, options, true);
|
|
248
|
+
},
|
|
249
|
+
[parsers, options]
|
|
250
|
+
);
|
|
251
|
+
useEffect(() => {
|
|
252
|
+
if (typeof window === "undefined") return;
|
|
253
|
+
const applyChange2 = /* @__PURE__ */ __name((searchParams, fromEmitter = false) => {
|
|
254
|
+
const result = {};
|
|
255
|
+
let hasChanged = false;
|
|
256
|
+
Object.entries(parsers).forEach(([key, parser]) => {
|
|
257
|
+
const value = searchParams.get(key);
|
|
258
|
+
const parsed = parser.parse(value ?? "");
|
|
259
|
+
const currentValue = stateRef.current[key];
|
|
260
|
+
if (!Object.is(currentValue, parsed)) {
|
|
261
|
+
hasChanged = true;
|
|
262
|
+
}
|
|
263
|
+
result[key] = parsed;
|
|
264
|
+
});
|
|
265
|
+
if (hasChanged) {
|
|
266
|
+
setState(result);
|
|
267
|
+
stateRef.current = result;
|
|
268
|
+
}
|
|
269
|
+
}, "applyChange");
|
|
270
|
+
const onPopState = /* @__PURE__ */ __name(() => {
|
|
271
|
+
const searchParams = getCurrentSearchParams();
|
|
272
|
+
applyChange2(searchParams, false);
|
|
273
|
+
}, "onPopState");
|
|
274
|
+
const onEmitterUpdate = /* @__PURE__ */ __name((searchParams) => {
|
|
275
|
+
applyChange2(searchParams, true);
|
|
276
|
+
}, "onEmitterUpdate");
|
|
277
|
+
window.addEventListener("popstate", onPopState);
|
|
278
|
+
emitter.on("update", onEmitterUpdate);
|
|
279
|
+
return () => {
|
|
280
|
+
window.removeEventListener("popstate", onPopState);
|
|
281
|
+
emitter.off("update", onEmitterUpdate);
|
|
282
|
+
};
|
|
283
|
+
}, [watchKeys, parsers]);
|
|
284
|
+
return [state, setValues];
|
|
285
|
+
}
|
|
286
|
+
__name(useQueryStates, "useQueryStates");
|
|
287
|
+
function usePagination(options) {
|
|
288
|
+
const {
|
|
289
|
+
defaultPage = 1,
|
|
290
|
+
defaultLimit = 10,
|
|
291
|
+
pageKey = "page",
|
|
292
|
+
limitKey = "limit"
|
|
293
|
+
} = options || {};
|
|
294
|
+
const [page, setPage] = useQueryState(pageKey, asInteger.withDefault(defaultPage));
|
|
295
|
+
const [limit, setLimit] = useQueryState(limitKey, asInteger.withDefault(defaultLimit));
|
|
296
|
+
const currentPage = page ?? defaultPage;
|
|
297
|
+
const currentLimit = limit ?? defaultLimit;
|
|
298
|
+
const offset = (currentPage - 1) * currentLimit;
|
|
299
|
+
return {
|
|
300
|
+
page: currentPage,
|
|
301
|
+
setPage,
|
|
302
|
+
limit: currentLimit,
|
|
303
|
+
setLimit,
|
|
304
|
+
offset,
|
|
305
|
+
resetPagination: /* @__PURE__ */ __name(() => {
|
|
306
|
+
setPage(defaultPage);
|
|
307
|
+
setLimit(defaultLimit);
|
|
308
|
+
}, "resetPagination")
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
__name(usePagination, "usePagination");
|
|
312
|
+
function useSearchFilters(options) {
|
|
313
|
+
const {
|
|
314
|
+
searchKey = "search",
|
|
315
|
+
defaultFilters = {},
|
|
316
|
+
filterKeys = Object.keys(defaultFilters)
|
|
317
|
+
} = options || {};
|
|
318
|
+
const [search, setSearch] = useQueryState(searchKey, asString);
|
|
319
|
+
const filterParsers = filterKeys.reduce(
|
|
320
|
+
(acc, key) => {
|
|
321
|
+
acc[key] = asString;
|
|
322
|
+
return acc;
|
|
323
|
+
},
|
|
324
|
+
{}
|
|
325
|
+
);
|
|
326
|
+
const [filters, setFilters] = useQueryStates(filterParsers);
|
|
327
|
+
const clearFilters = /* @__PURE__ */ __name(() => {
|
|
328
|
+
setSearch(null);
|
|
329
|
+
const clearedFilters = filterKeys.reduce(
|
|
330
|
+
(acc, key) => {
|
|
331
|
+
acc[key] = null;
|
|
332
|
+
return acc;
|
|
333
|
+
},
|
|
334
|
+
{}
|
|
335
|
+
);
|
|
336
|
+
setFilters(clearedFilters);
|
|
337
|
+
}, "clearFilters");
|
|
338
|
+
return {
|
|
339
|
+
search,
|
|
340
|
+
setSearch,
|
|
341
|
+
filters,
|
|
342
|
+
setFilters,
|
|
343
|
+
clearFilters
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
__name(useSearchFilters, "useSearchFilters");
|
|
347
|
+
export {
|
|
348
|
+
asArrayOf,
|
|
349
|
+
asBoolean,
|
|
350
|
+
asFloat,
|
|
351
|
+
asInteger,
|
|
352
|
+
asIsoDate,
|
|
353
|
+
asIsoDateTime,
|
|
354
|
+
asJson,
|
|
355
|
+
asString,
|
|
356
|
+
createParser,
|
|
357
|
+
loadRouteParams,
|
|
358
|
+
parseRouteParams,
|
|
359
|
+
usePagination,
|
|
360
|
+
useQueryState,
|
|
361
|
+
useQueryStates,
|
|
362
|
+
useSearchFilters
|
|
363
|
+
};
|
|
364
|
+
//# sourceMappingURL=client.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/query/client.ts","../../src/query/sync.ts"],"sourcesContent":["/**\n * Farm.js Client-Side Query State Management\n *\n * Type-safe URL search parameter state management - Like useState, but stored in the URL query string.\n * Client-only hooks for managing query parameters in the browser.\n * Inspired by nuqs implementation patterns.\n */\n\nimport { useState, useEffect, useCallback, useRef } from \"react\";\nimport { emitter } from \"./sync\";\nexport { parseRouteParams, loadRouteParams, type RouteParamsInput } from \"./params\";\n\nimport { asString as asStringClient, asInteger as asIntegerClient, type Parser } from \"./parsers\";\n\nexport {\n asString,\n asInteger,\n asFloat,\n asBoolean,\n asArrayOf,\n asJson,\n asIsoDate,\n asIsoDateTime,\n createParser,\n type Parser,\n type inferParserType,\n} from \"./parsers\";\n\nexport type UrlUpdateType = \"push\" | \"replace\";\nexport type HistoryMethod = \"pushState\" | \"replaceState\";\n\nexport interface Options {\n history?: HistoryMethod;\n shallow?: boolean;\n scroll?: boolean;\n throttleMs?: number;\n}\n\nconst getCurrentSearchParams = (): URLSearchParams => {\n if (typeof window === \"undefined\") return new URLSearchParams();\n return new URLSearchParams(window.location.search);\n};\n\nconst throttleTimers = new Map<string, NodeJS.Timeout>();\n\nconst applyChange = (\n searchParams: URLSearchParams,\n updates: Record<string, string | null>,\n keepExisting = true,\n): URLSearchParams => {\n const newParams = keepExisting ? new URLSearchParams(searchParams) : new URLSearchParams();\n\n Object.entries(updates).forEach(([key, value]) => {\n if (value === null || value === undefined || value === \"\") {\n newParams.delete(key);\n } else {\n newParams.set(key, value);\n }\n });\n\n return newParams;\n};\n\nconst updateURL = (\n updates: Record<string, string | null>,\n options: Options = {},\n emitUpdate = true,\n) => {\n if (typeof window === \"undefined\") return;\n\n const { history = \"pushState\", shallow = true, scroll = false, throttleMs } = options;\n const url = new URL(window.location.href);\n\n const newSearchParams = applyChange(new URLSearchParams(url.search), updates);\n const newSearch = newSearchParams.toString();\n const newUrl = url.pathname + (newSearch ? `?${newSearch}` : \"\") + url.hash;\n const currentUrl =\n window.location.pathname + (window.location.search || \"\") + window.location.hash;\n\n if (newUrl !== currentUrl) {\n const update = () => {\n if (history === \"replaceState\") {\n window.history.replaceState(null, \"\", newUrl);\n } else {\n window.history.pushState(null, \"\", newUrl);\n }\n\n if (emitUpdate) {\n const actualSearchParams = new URLSearchParams(window.location.search);\n emitter.emitUpdate(actualSearchParams);\n }\n\n if (shallow) {\n setTimeout(() => {\n window.dispatchEvent(new PopStateEvent(\"popstate\"));\n }, 0);\n }\n\n if (scroll) {\n window.scrollTo(0, 0);\n }\n };\n\n if (throttleMs && throttleMs > 0) {\n const throttleKey = Object.keys(updates).sort().join(\",\");\n\n const existingTimeout = throttleTimers.get(throttleKey);\n if (existingTimeout) {\n clearTimeout(existingTimeout);\n }\n\n const timeout = setTimeout(() => {\n update();\n throttleTimers.delete(throttleKey);\n }, throttleMs);\n\n throttleTimers.set(throttleKey, timeout);\n } else {\n update();\n }\n }\n};\n\nexport function useQueryState<TParser extends Parser<any>>(\n key: string,\n parser: TParser,\n options?: Options,\n): [\n NonNullable<ReturnType<TParser[\"parse\"]>> | null,\n (value: NonNullable<ReturnType<TParser[\"parse\"]>> | null) => void,\n];\nexport function useQueryState<T>(\n key: string,\n parser: Parser<T>,\n options?: Options,\n): [T | null, (value: T | null) => void];\nexport function useQueryState<TParser extends Parser<any>>(\n key: string,\n parser: TParser,\n options?: Options,\n): [\n NonNullable<ReturnType<TParser[\"parse\"]>> | null,\n (value: NonNullable<ReturnType<TParser[\"parse\"]>> | null) => void,\n] {\n type T = NonNullable<ReturnType<TParser[\"parse\"]>>;\n const [state, setState] = useState<T | null>(() => {\n if (typeof window === \"undefined\") return parser.parse(\"\");\n const searchParams = getCurrentSearchParams();\n const value = searchParams.get(key);\n const parsed = parser.parse(value ?? \"\");\n return parsed;\n });\n\n const stateRef = useRef(state);\n const isInternalUpdateRef = useRef(false);\n stateRef.current = state;\n\n const setValue = useCallback(\n (value: T | null) => {\n isInternalUpdateRef.current = true;\n\n setState(value);\n stateRef.current = value;\n\n const serialized = value === null ? null : parser.serialize(value);\n\n emitter.emitKey(key, { state: value, query: serialized });\n\n updateURL({ [key]: serialized }, options, true);\n\n setTimeout(() => {\n isInternalUpdateRef.current = false;\n }, 10);\n },\n [key, parser, options],\n );\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n const onPopState = () => {\n const searchParams = getCurrentSearchParams();\n const value = searchParams.get(key);\n const parsed = parser.parse(value ?? \"\");\n if (!Object.is(stateRef.current, parsed)) {\n setState(parsed);\n stateRef.current = parsed;\n }\n };\n\n const onEmitterUpdate = (searchParams: URLSearchParams) => {\n if (isInternalUpdateRef.current) {\n return;\n }\n\n const value = searchParams.get(key);\n const parsed = parser.parse(value ?? \"\");\n if (!Object.is(stateRef.current, parsed)) {\n setState(parsed);\n stateRef.current = parsed;\n }\n };\n\n const onKeyUpdate = (payload: { state: any; query: string | null }) => {\n if (isInternalUpdateRef.current) {\n return;\n }\n\n if (!Object.is(stateRef.current, payload.state)) {\n setState(payload.state);\n stateRef.current = payload.state;\n }\n };\n\n window.addEventListener(\"popstate\", onPopState);\n emitter.on(\"update\", onEmitterUpdate);\n emitter.onKey(key, onKeyUpdate);\n\n return () => {\n window.removeEventListener(\"popstate\", onPopState);\n emitter.off(\"update\", onEmitterUpdate);\n emitter.offKey(key, onKeyUpdate);\n };\n }, [key, parser]);\n\n return [state, setValue];\n}\n\nexport function useQueryStates<T extends Record<string, Parser<any>>>(\n parsers: T,\n options: Options = {},\n): [\n { [K in keyof T]: ReturnType<T[K][\"parse\"]> },\n (updates: Partial<{ [K in keyof T]: ReturnType<T[K][\"parse\"]> | null }>) => void,\n] {\n const keys = Object.keys(parsers);\n const watchKeys = keys.join(\"&\");\n\n const [state, setState] = useState<{ [K in keyof T]: ReturnType<T[K][\"parse\"]> }>(() => {\n const searchParams =\n typeof window === \"undefined\" ? new URLSearchParams() : getCurrentSearchParams();\n const result = {} as { [K in keyof T]: ReturnType<T[K][\"parse\"]> };\n\n Object.entries(parsers).forEach(([key, parser]) => {\n const value = searchParams.get(key);\n result[key as keyof T] = parser.parse(value ?? \"\");\n });\n\n return result;\n });\n\n const stateRef = useRef(state);\n stateRef.current = state;\n\n const setValues = useCallback(\n (updates: Partial<{ [K in keyof T]: ReturnType<T[K][\"parse\"]> | null }>) => {\n const newState = { ...stateRef.current, ...updates };\n setState(newState);\n stateRef.current = newState;\n\n Object.entries(updates).forEach(([key, value]) => {\n const parser = parsers[key];\n if (parser) {\n const serialized = value === null ? null : parser.serialize(value);\n emitter.emitKey(key, { state: value, query: serialized });\n }\n });\n\n const urlUpdates: Record<string, string | null> = {};\n Object.entries(updates).forEach(([key, value]) => {\n const parser = parsers[key];\n if (parser) {\n const serialized = value === null ? null : parser.serialize(value);\n urlUpdates[key] = serialized;\n }\n });\n\n updateURL(urlUpdates, options, true);\n },\n [parsers, options],\n );\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n const applyChange = (searchParams: URLSearchParams, fromEmitter = false) => {\n const result = {} as { [K in keyof T]: ReturnType<T[K][\"parse\"]> };\n let hasChanged = false;\n\n Object.entries(parsers).forEach(([key, parser]) => {\n const value = searchParams.get(key);\n const parsed = parser.parse(value ?? \"\");\n const currentValue = stateRef.current[key as keyof T];\n\n if (!Object.is(currentValue, parsed)) {\n hasChanged = true;\n }\n result[key as keyof T] = parsed;\n });\n\n if (hasChanged) {\n setState(result);\n stateRef.current = result;\n }\n };\n\n const onPopState = () => {\n const searchParams = getCurrentSearchParams();\n applyChange(searchParams, false);\n };\n\n const onEmitterUpdate = (searchParams: URLSearchParams) => {\n applyChange(searchParams, true);\n };\n\n window.addEventListener(\"popstate\", onPopState);\n emitter.on(\"update\", onEmitterUpdate);\n\n return () => {\n window.removeEventListener(\"popstate\", onPopState);\n emitter.off(\"update\", onEmitterUpdate);\n };\n }, [watchKeys, parsers]);\n\n return [state, setValues];\n}\n\nexport function usePagination(options?: {\n defaultPage?: number;\n defaultLimit?: number;\n pageKey?: string;\n limitKey?: string;\n}) {\n const {\n defaultPage = 1,\n defaultLimit = 10,\n pageKey = \"page\",\n limitKey = \"limit\",\n } = options || {};\n\n const [page, setPage] = useQueryState(pageKey, asIntegerClient.withDefault!(defaultPage));\n const [limit, setLimit] = useQueryState(limitKey, asIntegerClient.withDefault!(defaultLimit));\n\n const currentPage = page ?? defaultPage;\n const currentLimit = limit ?? defaultLimit;\n const offset = ((currentPage as number) - 1) * (currentLimit as number);\n\n return {\n page: currentPage,\n setPage,\n limit: currentLimit,\n setLimit,\n offset,\n resetPagination: () => {\n setPage(defaultPage);\n setLimit(defaultLimit);\n },\n };\n}\n\nexport function useSearchFilters<T extends Record<string, any>>(options?: {\n searchKey?: string;\n defaultFilters?: T;\n filterKeys?: (keyof T)[];\n}) {\n const {\n searchKey = \"search\",\n defaultFilters = {} as T,\n filterKeys = Object.keys(defaultFilters) as (keyof T)[],\n } = options || {};\n\n const [search, setSearch] = useQueryState(searchKey, asStringClient);\n\n const filterParsers = filterKeys.reduce(\n (acc, key) => {\n acc[key as string] = asStringClient;\n return acc;\n },\n {} as Record<string, Parser<string>>,\n );\n\n const [filters, setFilters] = useQueryStates(filterParsers);\n\n const clearFilters = () => {\n setSearch(null);\n const clearedFilters = filterKeys.reduce(\n (acc, key) => {\n acc[key as string] = null;\n return acc;\n },\n {} as Record<string, null>,\n );\n setFilters(clearedFilters);\n };\n\n return {\n search,\n setSearch,\n filters: filters as T,\n setFilters,\n clearFilters,\n };\n}\n","/**\n * Cross-hook synchronization system for query state\n * Inspired by nuqs implementation\n */\n\ntype Listener = (searchParams: URLSearchParams) => void;\ntype KeyListener = (payload: { state: any; query: string | null }) => void;\n\nclass Emitter {\n private listeners: Map<string, Set<Listener>> = new Map();\n private keyListeners: Map<string, Set<KeyListener>> = new Map();\n\n /**\n * Emit a global update event (all hooks should sync)\n */\n emitUpdate(searchParams: URLSearchParams): void {\n const listeners = this.listeners.get(\"update\") || new Set();\n listeners.forEach((listener) => listener(searchParams));\n }\n\n /**\n * Emit a key-specific update (for cross-hook sync)\n */\n emitKey(key: string, payload: { state: any; query: string | null }): void {\n const listeners = this.keyListeners.get(key) || new Set();\n listeners.forEach((listener) => listener(payload));\n }\n\n /**\n * Subscribe to global updates\n */\n on(event: \"update\", listener: Listener): void {\n if (!this.listeners.has(event)) {\n this.listeners.set(event, new Set());\n }\n this.listeners.get(event)!.add(listener);\n }\n\n /**\n * Subscribe to key-specific updates\n */\n onKey(key: string, listener: KeyListener): void {\n if (!this.keyListeners.has(key)) {\n this.keyListeners.set(key, new Set());\n }\n this.keyListeners.get(key)!.add(listener);\n }\n\n /**\n * Unsubscribe from global updates\n */\n off(event: \"update\", listener: Listener): void {\n const listeners = this.listeners.get(event);\n if (listeners) {\n listeners.delete(listener);\n }\n }\n\n /**\n * Unsubscribe from key-specific updates\n */\n offKey(key: string, listener: KeyListener): void {\n const listeners = this.keyListeners.get(key);\n if (listeners) {\n listeners.delete(listener);\n }\n }\n}\n\nexport const emitter = new Emitter();\n"],"mappings":"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","names":["applyChange"]}
|