@vercel/cli-support 65.11.0 → 65.12.0-snapshot-801db9d533c3
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/README.md +8 -120
- package/dist/chunks/add-BDJYCIBT.js +8 -0
- package/dist/chunks/add-LZR4CD7O.js +8 -0
- package/dist/chunks/add-MR6YZTRQ.js +8 -0
- package/dist/chunks/{alerts-JGRRCQA4.js → alerts-VOYMO6NJ.js} +1 -1
- package/dist/chunks/build-H2U56DYB.js +7 -0
- package/dist/chunks/{chunk-UF2E5BDE.js → chunk-23PO6JK6.js} +1 -1
- package/dist/chunks/{chunk-PUKYAALC.js → chunk-24SIHFEW.js} +1 -1
- package/dist/chunks/{chunk-EBIJ26IV.js → chunk-2C6TLXE5.js} +1 -1
- package/dist/chunks/{chunk-QROI2U32.js → chunk-2CQJKBKV.js} +2 -4
- package/dist/chunks/{chunk-7MZLV3KK.js → chunk-2CZL3GJU.js} +1 -1
- package/dist/chunks/{chunk-XH2R2EIK.js → chunk-2EV53VB5.js} +1 -1
- package/dist/chunks/{chunk-5B5CLOKM.js → chunk-2FNOYPRB.js} +1 -1
- package/dist/chunks/{chunk-4E6BGQWR.js → chunk-2LOA3LC6.js} +1 -1
- package/dist/chunks/{chunk-M3Z6NSC2.js → chunk-2V6UURUN.js} +1 -1
- package/dist/chunks/{chunk-B6QVH6IG.js → chunk-32EEQITR.js} +1 -1
- package/dist/chunks/{chunk-4VP57TOJ.js → chunk-33OMDQTW.js} +1 -1
- package/dist/chunks/{chunk-CFYLTZSV.js → chunk-3AGRCSWN.js} +1 -1
- package/dist/chunks/{chunk-42J2KCDF.js → chunk-3EFPSM6M.js} +1 -1
- package/dist/chunks/{chunk-DQASZDQT.js → chunk-3SNWIYU7.js} +1 -1
- package/dist/chunks/{chunk-EVBGFSK5.js → chunk-42Y46TZ3.js} +1 -1
- package/dist/chunks/{chunk-KV3QXTRZ.js → chunk-4OO6TXBM.js} +1 -1
- package/dist/chunks/{chunk-UUDE44NV.js → chunk-54FY6GJ5.js} +1 -1
- package/dist/chunks/{chunk-RIJ45N7C.js → chunk-5HQEYPDO.js} +1 -1
- package/dist/chunks/chunk-5KL6UFII.js +7 -0
- package/dist/chunks/{chunk-ECFLIVEE.js → chunk-5L566FZB.js} +1 -1
- package/dist/chunks/{chunk-NZW3RIQM.js → chunk-5MFGTXWC.js} +1 -1
- package/dist/chunks/{chunk-4ELZOAQH.js → chunk-5TMHRECT.js} +1 -1
- package/dist/chunks/{chunk-74VQ7PQV.js → chunk-5YLKPSZI.js} +1 -1
- package/dist/chunks/chunk-66TKNVRG.js +60 -0
- package/dist/chunks/{chunk-RDWLLSPU.js → chunk-6737KAJP.js} +1 -1
- package/dist/chunks/{chunk-V5TOMLK4.js → chunk-6Q2XEYCJ.js} +1 -1
- package/dist/chunks/{chunk-7VGBGUX7.js → chunk-6S6UZV3V.js} +1 -1
- package/dist/chunks/{chunk-EZLPMOHM.js → chunk-6WTGR7UP.js} +1 -1
- package/dist/chunks/chunk-7BDQUBSO.js +7 -0
- package/dist/chunks/chunk-7M6EHM5B.js +7 -0
- package/dist/chunks/{chunk-42FOKWGX.js → chunk-7PGDJTAH.js} +1 -1
- package/dist/chunks/{chunk-BZIC36KP.js → chunk-7TVNKTN2.js} +1 -1
- package/dist/chunks/{chunk-IIGNDMLO.js → chunk-ABSFPYM4.js} +1 -1
- package/dist/chunks/{chunk-MBXLL2HF.js → chunk-AGLOVMPC.js} +3 -3
- package/dist/chunks/{chunk-B56SRT5W.js → chunk-AIZIVXNX.js} +1 -1
- package/dist/chunks/{chunk-WBSFE6IE.js → chunk-AQBK55BT.js} +1 -1
- package/dist/chunks/chunk-AW33SRYY.js +7 -0
- package/dist/chunks/{chunk-UNPK7LVC.js → chunk-B3IBBNIR.js} +1 -1
- package/dist/chunks/{chunk-VRH7LWOC.js → chunk-B4KA3ZH2.js} +1 -1
- package/dist/chunks/{chunk-2J35YKA2.js → chunk-BC74BRVP.js} +12 -12
- package/dist/chunks/{chunk-PFZCGMJ7.js → chunk-BH5OASEJ.js} +1 -1
- package/dist/chunks/chunk-BIGJEDOA.js +11 -0
- package/dist/chunks/chunk-BOJDM3O7.js +7 -0
- package/dist/chunks/{chunk-375JVQYK.js → chunk-CJZE7647.js} +1 -1
- package/dist/chunks/{chunk-YZKARZ2B.js → chunk-CKJZSRAC.js} +1 -1
- package/dist/chunks/{chunk-TUAS3L5I.js → chunk-D5JRYYTT.js} +1 -1
- package/dist/chunks/{chunk-SF4E3AQ3.js → chunk-E3WP42P2.js} +1 -1
- package/dist/chunks/{chunk-6UMVJ7RL.js → chunk-E7CEQ2PO.js} +1 -1
- package/dist/chunks/chunk-E7IFYSQT.js +12 -0
- package/dist/chunks/chunk-EDO66J3L.js +7 -0
- package/dist/chunks/{chunk-C5QEQSEX.js → chunk-EIFBF3JQ.js} +1 -1
- package/dist/chunks/chunk-EM3U6PRB.js +7 -0
- package/dist/chunks/{chunk-AMPJ6RWT.js → chunk-EZVNGJN5.js} +1 -1
- package/dist/chunks/{chunk-ZPBGAZC2.js → chunk-F6KURUPQ.js} +1 -1
- package/dist/chunks/{chunk-5DXC4TE2.js → chunk-F7L5SXJM.js} +1 -1
- package/dist/chunks/{chunk-ZTHW5VNH.js → chunk-FFS3QJCU.js} +2 -2
- package/dist/chunks/{chunk-FNH3T3CF.js → chunk-FGZXIHGN.js} +1 -1
- package/dist/chunks/chunk-FXOKM2RM.js +7 -0
- package/dist/chunks/{chunk-NUSKXXZZ.js → chunk-FZLCDLWD.js} +1 -1
- package/dist/chunks/{chunk-CD6ZWCKT.js → chunk-G63MSB6N.js} +1 -1
- package/dist/chunks/{chunk-HNH3DPIZ.js → chunk-GAILIG45.js} +1 -1
- package/dist/chunks/{chunk-FVVOHGQE.js → chunk-GHNHUSVK.js} +1 -1
- package/dist/chunks/{chunk-4DMKP6AO.js → chunk-GOI2VVI7.js} +2 -2
- package/dist/chunks/chunk-GORL5DZC.js +11 -0
- package/dist/chunks/{chunk-WMWB7QKG.js → chunk-GP3KGUCK.js} +1 -1
- package/dist/chunks/{chunk-GL66K54F.js → chunk-GPDERS2D.js} +1 -1
- package/dist/chunks/{chunk-CU3LNJZV.js → chunk-GUSOYIW6.js} +1 -1
- package/dist/chunks/{chunk-AO6AMYBF.js → chunk-GY44CQXK.js} +1 -1
- package/dist/chunks/chunk-H64GR57G.js +7 -0
- package/dist/chunks/{chunk-VKCBEW6R.js → chunk-HBWRIR42.js} +1 -1
- package/dist/chunks/{chunk-4U6ACPA4.js → chunk-HR66URIC.js} +1 -1
- package/dist/chunks/chunk-HRGJO4HK.js +7 -0
- package/dist/chunks/chunk-HU5NUOWH.js +7 -0
- package/dist/chunks/{chunk-4KM733OB.js → chunk-HVJN2SSK.js} +1 -1
- package/dist/chunks/chunk-HXLOBW75.js +10 -0
- package/dist/chunks/{chunk-4T57TXQ3.js → chunk-IBBLLUXD.js} +1 -1
- package/dist/chunks/{chunk-MO2G2ND2.js → chunk-IJBRT2AD.js} +1 -1
- package/dist/chunks/{chunk-NT2N5UR4.js → chunk-IRIFXCZW.js} +1 -1
- package/dist/chunks/{chunk-ECGY67NB.js → chunk-J7RNU6AO.js} +1 -1
- package/dist/chunks/{chunk-SDYCW5JM.js → chunk-JONZUKWX.js} +1 -1
- package/dist/chunks/{chunk-P24YBQ6H.js → chunk-JVGENO2R.js} +1 -1
- package/dist/chunks/{chunk-PKNEWN4W.js → chunk-K46QQRUN.js} +1 -1
- package/dist/chunks/{chunk-BJXLR2RE.js → chunk-KKYNEEM7.js} +1 -1
- package/dist/chunks/{chunk-3TDFSO4X.js → chunk-KPSINH7T.js} +1 -1
- package/dist/chunks/chunk-KR4DMT3I.js +7 -0
- package/dist/chunks/{chunk-RCUDI7OF.js → chunk-M32HBBPK.js} +1 -1
- package/dist/chunks/{chunk-ZQXXESKG.js → chunk-MAA5GRIM.js} +1 -1
- package/dist/chunks/chunk-MCYG7CCE.js +7 -0
- package/dist/chunks/{chunk-VAZ7JG2Z.js → chunk-MNZYFYYH.js} +1 -1
- package/dist/chunks/{chunk-HDISAMDF.js → chunk-MQJ4MINN.js} +1 -1
- package/dist/chunks/{chunk-ITQPDXXA.js → chunk-MTZYPCZ7.js} +1 -1
- package/dist/chunks/{chunk-NE6PKR2J.js → chunk-MWWMY5R6.js} +1 -1
- package/dist/chunks/{chunk-UBJVL3NJ.js → chunk-MWXL6HYB.js} +3 -3
- package/dist/chunks/{chunk-UFXIPUNI.js → chunk-MXALPSIX.js} +1 -1
- package/dist/chunks/{chunk-7JMN657A.js → chunk-NBTFAXL4.js} +1 -1
- package/dist/chunks/{chunk-HYOWFNOP.js → chunk-NIZW6D6D.js} +1 -1
- package/dist/chunks/{chunk-KBVYN635.js → chunk-NREH4VSU.js} +1 -1
- package/dist/chunks/{chunk-TPJV5UNE.js → chunk-NTYBDY24.js} +1 -1
- package/dist/chunks/{chunk-NDMQVBTV.js → chunk-NYJTWSSD.js} +1 -1
- package/dist/chunks/{chunk-7ZJ7VUIR.js → chunk-O3DAPRJ3.js} +1 -1
- package/dist/chunks/chunk-O7TFWXLZ.js +13 -0
- package/dist/chunks/{chunk-K7ARJYAG.js → chunk-OFOZ5DBA.js} +1 -1
- package/dist/chunks/{chunk-FYE7ILRR.js → chunk-OFZUWHZW.js} +1 -1
- package/dist/chunks/{chunk-RI6DJAFI.js → chunk-OHEM2CSW.js} +1 -1
- package/dist/chunks/{chunk-6ORJPXDQ.js → chunk-OHK3Y5NS.js} +1 -1
- package/dist/chunks/{chunk-IHTWZEQW.js → chunk-OKKG2FUS.js} +1 -1
- package/dist/chunks/{chunk-7NMC4E66.js → chunk-OR3ZEVBW.js} +1 -1
- package/dist/chunks/{chunk-QDHTI5WK.js → chunk-POR6KNXT.js} +1 -1
- package/dist/chunks/{chunk-JUSNW3IF.js → chunk-PSFHYOLD.js} +1 -1
- package/dist/chunks/{chunk-TZE4CS4K.js → chunk-QBHTNUM5.js} +1 -1
- package/dist/chunks/chunk-QJDWNTYH.js +7 -0
- package/dist/chunks/{chunk-YUHKH4TK.js → chunk-QKOLFLLP.js} +1 -1
- package/dist/chunks/chunk-REJLEESP.js +10 -0
- package/dist/chunks/{chunk-EIMHC5UY.js → chunk-ROKZIMRO.js} +1 -1
- package/dist/chunks/{chunk-DR6OJB6P.js → chunk-RPIBJRIT.js} +1 -1
- package/dist/chunks/chunk-SEHERY6U.js +7 -0
- package/dist/chunks/{chunk-RR5SDYNN.js → chunk-SHMHL6W7.js} +1 -1
- package/dist/chunks/{chunk-5FIY443M.js → chunk-SMETSNPH.js} +1 -1
- package/dist/chunks/{chunk-NMIZSQDN.js → chunk-SP6E7PHW.js} +1 -1
- package/dist/chunks/chunk-SQBDW5FO.js +10 -0
- package/dist/chunks/chunk-SWFG73OS.js +8 -0
- package/dist/chunks/{chunk-CHIYT3V4.js → chunk-TA7KTIDV.js} +1 -1
- package/dist/chunks/{chunk-W24TLPO5.js → chunk-TJBVFVXK.js} +1 -1
- package/dist/chunks/{chunk-JTAUWH5V.js → chunk-TJUZVODP.js} +1 -1
- package/dist/chunks/{chunk-VWJXV5ZM.js → chunk-TKVUWTBK.js} +1 -1
- package/dist/chunks/chunk-U7ZEFVSQ.js +8 -0
- package/dist/chunks/{chunk-WTFD4MDT.js → chunk-UZQJQXGJ.js} +1 -1
- package/dist/chunks/{chunk-UIMJNASP.js → chunk-V7G4VDZI.js} +1 -1
- package/dist/chunks/{chunk-WNDR5HCU.js → chunk-VCJIB3FB.js} +1 -1
- package/dist/chunks/{chunk-EGTJTCCW.js → chunk-VFBELAGX.js} +1 -1
- package/dist/chunks/{chunk-AYZ52QDF.js → chunk-VM6X5BTK.js} +1 -1
- package/dist/chunks/{chunk-HZEKH3RO.js → chunk-VVTMF2AY.js} +1 -1
- package/dist/chunks/{chunk-N65H4JMJ.js → chunk-W25UARQV.js} +1 -1
- package/dist/chunks/chunk-WLMW7K7F.js +7 -0
- package/dist/chunks/{chunk-IHCYNUI2.js → chunk-XJYDISH3.js} +1 -1
- package/dist/chunks/chunk-XSQZ35V6.js +7 -0
- package/dist/chunks/{chunk-YODQLETL.js → chunk-XVDUP67R.js} +1 -1
- package/dist/chunks/{chunk-SLCPSRDR.js → chunk-Y2FVJ7YO.js} +1 -1
- package/dist/chunks/chunk-Y2SQC4GV.js +10 -0
- package/dist/chunks/{chunk-FVTRIRML.js → chunk-Y5S2OEJH.js} +1 -1
- package/dist/chunks/{chunk-EJN55YDV.js → chunk-YANOBY2G.js} +1 -1
- package/dist/chunks/{chunk-2RXUQ72I.js → chunk-YIOMTAUF.js} +1 -1
- package/dist/chunks/{chunk-BW25OFQG.js → chunk-YLCIOXSX.js} +1 -1
- package/dist/chunks/{chunk-GZLYNPNU.js → chunk-YNCWSPPJ.js} +1 -1
- package/dist/chunks/chunk-YQQ3A3YC.js +13 -0
- package/dist/chunks/{chunk-UI2H2EIM.js → chunk-YTRKHRL3.js} +1 -1
- package/dist/chunks/{chunk-MIIHBRKV.js → chunk-Z2K2JR7F.js} +1 -1
- package/dist/chunks/{chunk-F7AVGV4Y.js → chunk-Z73UJVGD.js} +1 -1
- package/dist/chunks/{chunk-6Y2ZL5XJ.js → chunk-ZKNEIE44.js} +2 -2
- package/dist/chunks/chunk-ZXEWWSTH.js +10 -0
- package/dist/chunks/chunk-ZZLCRSES.js +11 -0
- package/dist/chunks/clear-7QUM5KH7.js +8 -0
- package/dist/chunks/{cli-embedded-Y74S252S.js → cli-embedded-ABHGJLYX.js} +1 -1
- package/dist/chunks/compile-vercel-config-RDISBTDC.js +7 -0
- package/dist/chunks/config-2YNYR6YI.js +7 -0
- package/dist/chunks/config-4AOTKKGI.js +8 -0
- package/dist/chunks/config-validator.mjs +1 -1
- package/dist/chunks/{connect-git-provider-GFAJLQLU.js → connect-git-provider-BMUUC7ND.js} +1 -1
- package/dist/chunks/contract-3VSUIBEY.js +10 -0
- package/dist/chunks/delete-EJNR4UYC.js +10 -0
- package/dist/chunks/delete-OYOBFPEG.js +9 -0
- package/dist/chunks/describe-ORIEHT3R.js +25 -0
- package/dist/chunks/detect-projects-AKK2XI76.js +7 -0
- package/dist/chunks/detect-services-3LYPKUVL.js +7 -0
- package/dist/chunks/disable-U6JU546S.js +7 -0
- package/dist/chunks/discard-6SHAFQ2H.js +14 -0
- package/dist/chunks/edit-YMWKFN3H.js +8 -0
- package/dist/chunks/edit-YTTKJFTG.js +9 -0
- package/dist/chunks/enable-A6KBPFXJ.js +7 -0
- package/dist/chunks/{esm-4ZHGYTUV.js → esm-CF5UHWPM.js} +1 -1
- package/dist/chunks/{esm-LNIAU767.js → esm-EYOXGOVF.js} +1 -1
- package/dist/chunks/{esm-IBY43SSX.js → esm-FSME24KA.js} +1 -1
- package/dist/chunks/{esm-7FVTQHRH.js → esm-IUATPKKB.js} +1 -1
- package/dist/chunks/{esm-GTSUYLKG.js → esm-L6OKDFWP.js} +1 -1
- package/dist/chunks/{esm-TEM4KPXZ.js → esm-ORQC2ZSA.js} +1 -1
- package/dist/chunks/{esm-TLAM7FSK.js → esm-PYIZNQIK.js} +1 -1
- package/dist/chunks/{exec-H3X7U4P3.js → exec-RQ257MTR.js} +1 -1
- package/dist/chunks/{export-25TQ3YBT.js → export-MMU6VVFK.js} +1 -1
- package/dist/chunks/future-ANILGGFQ.js +7 -0
- package/dist/chunks/generate-cert-for-deploy-LKKZUKWF.js +7 -0
- package/dist/chunks/image-OWWKVBTU.js +7 -0
- package/dist/chunks/import-builders-VENL23EH.js +7 -0
- package/dist/chunks/{inspect-3W3TUJ6P.js → inspect-BPIJT4OX.js} +1 -1
- package/dist/chunks/inspect-GDZJZGHW.js +13 -0
- package/dist/chunks/{inspect-TN2QY3BP.js → inspect-H7JGEVL7.js} +1 -1
- package/dist/chunks/inspect-I6LQLOBG.js +8 -0
- package/dist/chunks/{inspect-BRYVSQBD.js → inspect-IGFAKTAX.js} +1 -1
- package/dist/chunks/inspect-U6V4UQXC.js +9 -0
- package/dist/chunks/list-763XVNFH.js +8 -0
- package/dist/chunks/{list-WA6Q7DUN.js → list-OX2N4JK7.js} +1 -1
- package/dist/chunks/list-WHZXMZJ5.js +12 -0
- package/dist/chunks/{list-6W4UQBY4.js → list-XLPMNNI7.js} +1 -1
- package/dist/chunks/login-2PGWWOKB.js +7 -0
- package/dist/chunks/login-T63WJL4S.js +9 -0
- package/dist/chunks/logs-S2KJGEIG.js +7 -0
- package/dist/chunks/ls-5HXYPIFR.js +11 -0
- package/dist/chunks/ls-M4GJOBZP.js +8 -0
- package/dist/chunks/ls-N56BWH2L.js +8 -0
- package/dist/chunks/{ls-L5LLKZBV.js → ls-O5B3LY4D.js} +1 -1
- package/dist/chunks/{ls-MAJ4QZTY.js → ls-PNGTHVUK.js} +1 -1
- package/dist/chunks/{ls-UXE5RSZN.js → ls-Q7FAOSVD.js} +1 -1
- package/dist/chunks/{ls-4WP6LHLL.js → ls-R4UDBWS3.js} +1 -1
- package/dist/chunks/migrate-experimental-services-HWJXO4AJ.js +7 -0
- package/dist/chunks/mutate-FM6BLE46.js +9 -0
- package/dist/chunks/{native-self-update-DEVBYOH2.js → native-self-update-7LL6RPJW.js} +1 -1
- package/dist/chunks/notifications-ZSZN35BQ.js +7 -0
- package/dist/chunks/open-4RXUUYQP.js +7 -0
- package/dist/chunks/openapi-457MABMI.js +7 -0
- package/dist/chunks/permissions-UJRTMOT7.js +7 -0
- package/dist/chunks/{plugin-offer-JUYWL4I7.js → plugin-offer-KJCRPUU5.js} +1 -1
- package/dist/chunks/prompt-missing-credentials-B5DGQFI7.js +7 -0
- package/dist/chunks/publish-I3APOD3N.js +15 -0
- package/dist/chunks/pull-2YUNTVPQ.js +7 -0
- package/dist/chunks/purchase-domain-if-available-3YOXUXII.js +7 -0
- package/dist/chunks/push-4QQJQRGZ.js +7 -0
- package/dist/chunks/query-2JO6HH5N.js +12 -0
- package/dist/chunks/reauthenticate-COYQMMAG.js +7 -0
- package/dist/chunks/remove-PWS5EJ7F.js +9 -0
- package/dist/chunks/reorder-COZQX64R.js +10 -0
- package/dist/chunks/reply-XDYZNHW2.js +9 -0
- package/dist/chunks/resolve-6KUFCZRX.js +12 -0
- package/dist/chunks/resolve-agent-team-NOT235ZN.js +7 -0
- package/dist/chunks/{resolve-deployment-framework-preset-AXXYBFCL.js → resolve-deployment-framework-preset-4TKUU6AH.js} +1 -1
- package/dist/chunks/restore-GSSD4ZWH.js +16 -0
- package/dist/chunks/rm-AUNVZPJ5.js +8 -0
- package/dist/chunks/rm-EIMUYBJT.js +8 -0
- package/dist/chunks/rm-EJH37HYN.js +8 -0
- package/dist/chunks/rm-O5NMCBC3.js +8 -0
- package/dist/chunks/rm-PHTOXG4E.js +8 -0
- package/dist/chunks/{routes-BP54NO3Z.js → routes-NEZJKMR5.js} +1 -1
- package/dist/chunks/rule-inspect-7HNYKQ6X.js +8 -0
- package/dist/chunks/{schema-753JMRZA.js → schema-5P7HROXE.js} +1 -1
- package/dist/chunks/schema-MZM5MN5V.js +14 -0
- package/dist/chunks/select-org-3BZWQD6R.js +7 -0
- package/dist/chunks/set-2RH74ZC3.js +7 -0
- package/dist/chunks/set-Q2EJ3V44.js +9 -0
- package/dist/chunks/setup-and-link-BT5TNY4J.js +7 -0
- package/dist/chunks/{skills-QZ4AMS2K.js → skills-DUOUHPBY.js} +1 -1
- package/dist/chunks/{statuspage-KHTMA4WL.js → statuspage-K5SC7KAQ.js} +1 -1
- package/dist/chunks/{detect-projects-K7SVMH5T.js → table-W6LOHWWF.js} +1 -1
- package/dist/chunks/tags-QOJEEMKS.js +7 -0
- package/dist/chunks/{types-NPUAHKSK.js → types-7L6HBXAU.js} +1 -1
- package/dist/chunks/{update-7XH7HM5F.js → update-HS6QFTQK.js} +1 -1
- package/dist/chunks/usage-3N6IA5SX.js +13 -0
- package/dist/chunks/validate-config-YLL6RPCP.js +7 -0
- package/dist/commands/build/index.js +1 -1
- package/dist/commands/deploy/index.js +19 -37
- package/dist/commands/dev/index.js +4 -4
- package/dist/commands/env/index.js +1 -1
- package/dist/commands/link/index.js +1 -1
- package/dist/commands/list/index.js +1 -1
- package/dist/commands/project/index.js +1 -1
- package/dist/commands-account.js +3 -3
- package/dist/commands-ai.js +6 -6
- package/dist/commands-blob.js +1 -1
- package/dist/commands-core.js +20 -20
- package/dist/commands-deployments.js +5 -5
- package/dist/commands-flags.js +1 -1
- package/dist/commands-integrations.js +1 -1
- package/dist/commands-observability.js +15 -8
- package/dist/commands-routing.js +5 -4
- package/dist/help.js +1 -1
- package/dist/index.js +5 -5
- package/dist/internal-build.js +1 -1
- package/dist/package.json +45 -245
- package/dist/vc.js +47 -695
- package/dist/version.mjs +1 -1
- package/package.json +51 -196
- package/dist/chunks/add-4R6FUHQT.js +0 -8
- package/dist/chunks/add-F3H4BFJZ.js +0 -8
- package/dist/chunks/add-TCOJ4SIQ.js +0 -8
- package/dist/chunks/build-GOLTZF6S.js +0 -7
- package/dist/chunks/chunk-3KJ6HWSX.js +0 -7
- package/dist/chunks/chunk-5X635INY.js +0 -11
- package/dist/chunks/chunk-7LPNDK2O.js +0 -7
- package/dist/chunks/chunk-A3M2BHWR.js +0 -13
- package/dist/chunks/chunk-BUFEV3T4.js +0 -11
- package/dist/chunks/chunk-BVR6OIU5.js +0 -7
- package/dist/chunks/chunk-D7BB5BPA.js +0 -10
- package/dist/chunks/chunk-DBT6PGEH.js +0 -7
- package/dist/chunks/chunk-DRZVM7CB.js +0 -12
- package/dist/chunks/chunk-EICEQXVS.js +0 -7
- package/dist/chunks/chunk-F2R7L3ZB.js +0 -7
- package/dist/chunks/chunk-FHMCTV5E.js +0 -7
- package/dist/chunks/chunk-FOE3MWES.js +0 -7
- package/dist/chunks/chunk-HKU6D7DU.js +0 -8
- package/dist/chunks/chunk-IOTKHTZH.js +0 -7
- package/dist/chunks/chunk-K4JTCVNW.js +0 -13
- package/dist/chunks/chunk-LALPOYIA.js +0 -8
- package/dist/chunks/chunk-M3R7F2N4.js +0 -7
- package/dist/chunks/chunk-MUKXOI2K.js +0 -8
- package/dist/chunks/chunk-NIS66BFX.js +0 -63
- package/dist/chunks/chunk-NSPW47RU.js +0 -7
- package/dist/chunks/chunk-NTDP6RTQ.js +0 -11
- package/dist/chunks/chunk-Q2QVK3TH.js +0 -7
- package/dist/chunks/chunk-RM3ZDRYE.js +0 -7
- package/dist/chunks/chunk-UCRMJMH6.js +0 -10
- package/dist/chunks/chunk-XQDHMFQY.js +0 -7
- package/dist/chunks/chunk-XRIM4BUF.js +0 -7
- package/dist/chunks/chunk-Z64MQIOE.js +0 -10
- package/dist/chunks/chunk-ZS2WS4AM.js +0 -7
- package/dist/chunks/clear-PECHXMV5.js +0 -8
- package/dist/chunks/compile-vercel-config-EM3HYOQC.js +0 -7
- package/dist/chunks/config-DA2NZUDH.js +0 -8
- package/dist/chunks/config-X6O3DT7V.js +0 -7
- package/dist/chunks/contract-RHMWRX4W.js +0 -10
- package/dist/chunks/delete-5RN5VW5L.js +0 -9
- package/dist/chunks/delete-MT6I7R7K.js +0 -10
- package/dist/chunks/detect-services-HSA4JHJX.js +0 -7
- package/dist/chunks/disable-LXPZDQMC.js +0 -7
- package/dist/chunks/discard-PW65T65S.js +0 -14
- package/dist/chunks/edit-WFSONASO.js +0 -8
- package/dist/chunks/edit-YID3FOJ3.js +0 -9
- package/dist/chunks/enable-X2EKQCIY.js +0 -7
- package/dist/chunks/future-DQBK457G.js +0 -7
- package/dist/chunks/generate-cert-for-deploy-OMEACY5G.js +0 -7
- package/dist/chunks/image-AO2OZG4W.js +0 -7
- package/dist/chunks/import-builders-GSDV4K4A.js +0 -7
- package/dist/chunks/inspect-4244CRHI.js +0 -13
- package/dist/chunks/inspect-C43IV7X4.js +0 -9
- package/dist/chunks/inspect-RP5KXOYQ.js +0 -8
- package/dist/chunks/list-2SY6PZLC.js +0 -12
- package/dist/chunks/list-WBKZGIMQ.js +0 -8
- package/dist/chunks/login-K6XBWOFD.js +0 -9
- package/dist/chunks/login-OGMXEW5N.js +0 -7
- package/dist/chunks/logs-R3ZERQ7M.js +0 -7
- package/dist/chunks/ls-EVAQD3LI.js +0 -8
- package/dist/chunks/ls-O5DKK3TY.js +0 -8
- package/dist/chunks/ls-PTHGXQLK.js +0 -11
- package/dist/chunks/mutate-EKZWPQQJ.js +0 -9
- package/dist/chunks/notifications-F5S3RKZF.js +0 -7
- package/dist/chunks/open-KGVG54NN.js +0 -7
- package/dist/chunks/openapi-7TPDTMCU.js +0 -7
- package/dist/chunks/permissions-5K7JZOMB.js +0 -7
- package/dist/chunks/prompt-missing-credentials-DX2KJB5X.js +0 -7
- package/dist/chunks/publish-KIRTO2ZO.js +0 -15
- package/dist/chunks/pull-3CRJK7BX.js +0 -7
- package/dist/chunks/purchase-domain-if-available-55IXEF43.js +0 -7
- package/dist/chunks/push-4YG5HKSD.js +0 -7
- package/dist/chunks/query-67KQVLTR.js +0 -12
- package/dist/chunks/reauthenticate-SWSBFGDU.js +0 -7
- package/dist/chunks/remove-SYTIFVWW.js +0 -9
- package/dist/chunks/reorder-TX5MXJEB.js +0 -10
- package/dist/chunks/reply-XVK33N5T.js +0 -9
- package/dist/chunks/resolve-JZ262ZF4.js +0 -12
- package/dist/chunks/resolve-agent-team-BG5YW55B.js +0 -7
- package/dist/chunks/restore-IPFL7TKT.js +0 -16
- package/dist/chunks/rm-2BCAZGQU.js +0 -8
- package/dist/chunks/rm-3CCU3CE6.js +0 -8
- package/dist/chunks/rm-5CQV5LYG.js +0 -8
- package/dist/chunks/rm-OV4OU6H2.js +0 -8
- package/dist/chunks/rm-WFGMOZ3G.js +0 -8
- package/dist/chunks/rule-inspect-RFJIIXZH.js +0 -8
- package/dist/chunks/schema-SUNFQGUL.js +0 -14
- package/dist/chunks/select-org-MPHPWWPU.js +0 -7
- package/dist/chunks/set-BR6EEOPB.js +0 -7
- package/dist/chunks/set-I3NWZRSI.js +0 -9
- package/dist/chunks/setup-and-link-MRTKVOWD.js +0 -7
- package/dist/chunks/tags-7DIZEAVE.js +0 -7
- package/dist/chunks/usage-3BS7JCCU.js +0 -13
- package/dist/chunks/validate-config-LAD7BU3B.js +0 -7
- package/dist/launcher-errors.js +0 -11
- package/dist/native-download.js +0 -8
|
@@ -4,7 +4,7 @@ import { dirname as __dirname_ } from 'node:path';
|
|
|
4
4
|
const require = __createRequire(import.meta.url);
|
|
5
5
|
const __filename = __fileURLToPath(import.meta.url);
|
|
6
6
|
const __dirname = __dirname_(__filename);
|
|
7
|
-
import{require_dist}from"./chunk-
|
|
7
|
+
import{require_dist}from"./chunk-MCYG7CCE.js";import{__commonJS,__require}from"./chunk-BZENIQ7N.js";var require_common=__commonJS({"../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/common.js"(exports,module){"use strict";function isNothing(subject){return typeof subject>"u"||subject===null}function isObject(subject){return typeof subject=="object"&&subject!==null}function toArray(sequence){return Array.isArray(sequence)?sequence:isNothing(sequence)?[]:[sequence]}function extend(target,source){var index,length,key,sourceKeys;if(source)for(sourceKeys=Object.keys(source),index=0,length=sourceKeys.length;index<length;index+=1)key=sourceKeys[index],target[key]=source[key];return target}function repeat(string,count){var result="",cycle;for(cycle=0;cycle<count;cycle+=1)result+=string;return result}function isNegativeZero(number){return number===0&&Number.NEGATIVE_INFINITY===1/number}module.exports.isNothing=isNothing;module.exports.isObject=isObject;module.exports.toArray=toArray;module.exports.repeat=repeat;module.exports.isNegativeZero=isNegativeZero;module.exports.extend=extend}});var require_exception=__commonJS({"../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/exception.js"(exports,module){"use strict";function YAMLException(reason,mark){Error.call(this),this.name="YAMLException",this.reason=reason,this.mark=mark,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}YAMLException.prototype=Object.create(Error.prototype);YAMLException.prototype.constructor=YAMLException;YAMLException.prototype.toString=function(compact){var result=this.name+": ";return result+=this.reason||"(unknown reason)",!compact&&this.mark&&(result+=" "+this.mark.toString()),result};module.exports=YAMLException}});var require_mark=__commonJS({"../../node_modules/.pnpm/js-yaml@3.13.1/node_modules/js-yaml/lib/js-yaml/mark.js"(exports,module){"use strict";var common=require_common();function Mark(name,buffer,position,line,column){this.name=name,this.buffer=buffer,this.position=position,this.line=line,this.column=column}Mark.prototype.getSnippet=function(indent,maxLength){var head,start,tail,end,snippet;if(!this.buffer)return null;for(indent=indent||4,maxLength=maxLength||75,head="",start=this.position;start>0&&`\0\r
|
|
8
8
|
\x85\u2028\u2029`.indexOf(this.buffer.charAt(start-1))===-1;)if(start-=1,this.position-start>maxLength/2-1){head=" ... ",start+=5;break}for(tail="",end=this.position;end<this.buffer.length&&`\0\r
|
|
9
9
|
\x85\u2028\u2029`.indexOf(this.buffer.charAt(end))===-1;)if(end+=1,end-this.position>maxLength/2-1){tail=" ... ",end-=5;break}return snippet=this.buffer.slice(start,end),common.repeat(" ",indent)+head+snippet+tail+`
|
|
10
10
|
`+common.repeat(" ",indent+this.position-start+head.length)+"^"};Mark.prototype.toString=function(compact){var snippet,where="";return this.name&&(where+='in "'+this.name+'" '),where+="at line "+(this.line+1)+", column "+(this.column+1),compact||(snippet=this.getSnippet(),snippet&&(where+=`:
|
|
@@ -64,7 +64,7 @@ ${codeblock}`,options),this.line=line,this.column=column,this.codeblock=codebloc
|
|
|
64
64
|
${preamble}`:`[${tableKey}]`),preamble&&tables?`${preamble}
|
|
65
65
|
${tables}`:preamble||tables}function stringify(obj,{maxDepth=1e3,numbersAsFloat=!1}={}){if(extendedTypeOf(obj)!=="object")throw new TypeError("stringify can only be called with an object");let str=stringifyTable(0,obj,"",maxDepth,numbersAsFloat);return str[str.length-1]!==`
|
|
66
66
|
`?str+`
|
|
67
|
-
`:str}var index_default={parse,stringify,TomlDate,TomlError};}});var require_read_config_file=__commonJS({"../frameworks/dist/read-config-file.js"(exports,module){"use strict";var __create=Object.create,__defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),read_config_file_exports={};__export(read_config_file_exports,{readConfigFile:()=>readConfigFile});module.exports=__toCommonJS(read_config_file_exports);var import_js_yaml=__toESM(require_js_yaml2()),import_smol_toml=require_dist2(),import_fs=__require("fs"),import_error_utils=require_dist(),{readFile}=import_fs.promises;async function readFileOrNull(file){try{return await readFile(file)}catch(error){if(!(0,import_error_utils.isErrnoException)(error)||error.code!=="ENOENT")throw error}return null}async function readConfigFile(files){files=Array.isArray(files)?files:[files];for(let name of files){let data=await readFileOrNull(name);if(data){let str=data.toString("utf8");if(name.endsWith(".json"))return JSON.parse(str);if(name.endsWith(".toml"))return(0,import_smol_toml.parse)(str);if(name.endsWith(".yaml")||name.endsWith(".yml"))return import_js_yaml.default.safeLoad(str,{filename:name})}}return null}}});var require_types=__commonJS({"../frameworks/dist/types.js"(exports,module){"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),types_exports={};module.exports=__toCommonJS(types_exports)}});var require_frameworks=__commonJS({"../frameworks/dist/frameworks.js"(exports,module){"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__reExport=(target,mod,secondTarget)=>(__copyProps(target,mod,"default"),secondTarget&&__copyProps(secondTarget,mod,"default")),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),frameworks_exports={};__export(frameworks_exports,{default:()=>frameworks_default,frameworkList:()=>frameworkList,frameworks:()=>frameworks});module.exports=__toCommonJS(frameworks_exports);var import_path=__require("path"),import_fs=__require("fs"),import_read_config_file=require_read_config_file();__reExport(frameworks_exports,require_types(),module.exports);var{readdir,readFile,unlink}=import_fs.promises,frameworks=[{name:"Container",slug:"container",runtimeFramework:!0,logo:"https://api-frameworks.vercel.sh/framework-logos/container.svg",tagline:"Deploy any project as a container image built from a Dockerfile.",description:"A project deployed as a container image, built from a Dockerfile or Containerfile.",website:"https://docs.docker.com/reference/dockerfile/",useRuntime:{src:"<detect>",use:"@vercel/container"},detectors:{some:[{path:"Dockerfile.vercel"},{path:"Containerfile.vercel"},{path:"Dockerfile",fallback:!0},{path:"Containerfile",fallback:!0}]},settings:{installCommand:{placeholder:"None",value:null},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{placeholder:"None"}},getOutputDirName:async()=>"public"},{name:"Blitz.js (Legacy)",slug:"blitzjs",demo:"https://blitz-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/blitz.svg",tagline:"Blitz.js: The Fullstack React Framework",description:"A brand new Blitz.js app - the result of running `npx blitz@0.45.4 new`.",website:"https://blitzjs.com",envPrefix:"NEXT_PUBLIC_",useRuntime:{src:"package.json",use:"@vercel/next"},detectors:{some:[{path:"blitz.config.js"},{path:"blitz.config.ts"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `blitz build`",value:"blitz build"},devCommand:{value:"blitz start"},outputDirectory:{placeholder:"Next.js default"}},getOutputDirName:async()=>"public"},{name:"Next.js",slug:"nextjs",demo:"https://nextjs-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/next.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/next-dark.svg",screenshot:"https://py8fhxnkzwtsqdo9.public.blob.vercel-storage.com/front/import/nextjs.png",tagline:"Next.js makes you productive with React instantly \u2014 whether you want to build static or dynamic sites.",description:"A Next.js app and a Serverless Function API.",website:"https://nextjs.org",sort:1,envPrefix:"NEXT_PUBLIC_",useRuntime:{src:"package.json",use:"@vercel/next"},detectors:{every:[{matchPackage:"next"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `next build`",value:"next build"},devCommand:{value:"next dev --port $PORT",placeholder:"next"},outputDirectory:{placeholder:"Next.js default"}},recommendedIntegrations:[{id:"oac_5lUsiANun1DEzgLg0NZx5Es3",dependencies:["next-plugin-sentry","next-sentry-source-maps"]}],getOutputDirName:async()=>"public",cachePattern:".next/cache/**"},{name:"Gatsby.js",slug:"gatsby",demo:"https://gatsby.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/gatsby.svg",tagline:"Gatsby helps developers build blazing fast websites and apps with React.",description:"A Gatsby starter app with an API Route.",website:"https://gatsbyjs.org",sort:5,envPrefix:"GATSBY_",detectors:{every:[{matchPackage:"gatsby"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `gatsby build`",value:"gatsby build"},devCommand:{value:"gatsby develop --port $PORT",placeholder:"gatsby develop"},outputDirectory:{value:"public"}},dependency:"gatsby",getOutputDirName:async()=>"public",defaultRoutes:async dirPrefix=>{try{let nowRoutesPath=(0,import_path.join)(dirPrefix,"public","__now_routes_g4t5bY.json"),content=await readFile(nowRoutesPath,"utf8"),nowRoutes=JSON.parse(content);try{await unlink(nowRoutesPath)}catch{}return nowRoutes}catch{return[{src:"^/static/(.*)$",headers:{"cache-control":"public,max-age=31536000,immutable"},continue:!0},{src:"^/.*\\.(js|css)$",headers:{"cache-control":"public,max-age=31536000,immutable"},continue:!0},{src:"^/(sw\\.js|app-data\\.json|.*\\.html|page-data/.*)$",headers:{"cache-control":"public,max-age=0,must-revalidate"},continue:!0},{handle:"filesystem"},{src:".*",status:404,dest:"404.html"}]}},cachePattern:"{.cache,public}/**"},{name:"Remix",slug:"remix",demo:"https://remix-run-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/remix-no-shadow.svg",tagline:"Build Better Websites",description:"A new Remix app \u2014 the result of running `npx create-remix`.",website:"https://remix.run",sort:6,supersedes:["hydrogen","vite","node"],useRuntime:{src:"package.json",use:"@vercel/remix-builder"},ignoreRuntimes:["@vercel/node"],detectors:{some:[{matchPackage:"@remix-run/dev"},{path:"remix.config.js"},{path:"remix.config.mjs"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{value:"remix build",placeholder:"`npm run build` or `remix build`"},devCommand:{value:"remix dev",placeholder:"remix dev"},outputDirectory:{value:"public"}},dependency:"remix",getOutputDirName:async()=>"public"},{name:"React Router",slug:"react-router",demo:"https://react-router-v7-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/react-router.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/react-router-dark.svg",tagline:"Declarative routing for React",description:"A user-obsessed, standards-focused, multi-strategy router you can deploy anywhere.",website:"https://reactrouter.com",sort:7,supersedes:["hydrogen","vite","node"],useRuntime:{src:"package.json",use:"@vercel/remix-builder"},ignoreRuntimes:["@vercel/node"],detectors:{some:[{path:"vite.config.js",matchContent:"@react-router/dev/vite"},{path:"vite.config.ts",matchContent:"@react-router/dev/vite"},{path:"react-router.config.js"},{path:"react-router.config.ts"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{value:"react-router build",placeholder:"`npm run build` or `react-router build`"},devCommand:{value:"react-router dev",placeholder:"react-router dev"},outputDirectory:{value:"build"}},dependency:"react-router",getOutputDirName:async()=>"build"},{name:"Astro",slug:"astro",demo:"https://astro-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/astro.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/astro-dark.svg",tagline:"Astro is a new kind of static site builder for the modern web. Powerful developer experience meets lightweight output.",description:"An Astro site, using the basics starter kit.",website:"https://astro.build",envPrefix:"PUBLIC_",detectors:{every:[{matchPackage:"astro"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{value:"astro build",placeholder:"`npm run build` or `astro build`"},devCommand:{value:"astro dev --port $PORT",placeholder:"astro dev"},outputDirectory:{value:"dist"}},dependency:"astro",getOutputDirName:async()=>"dist",defaultRoutes:[{src:"^/assets/(.*)$",headers:{"cache-control":"public, max-age=31536000, immutable"},continue:!0},{src:"^/_astro/(.*)$",headers:{"cache-control":"public, max-age=31536000, immutable"},continue:!0}]},{name:"Hexo",slug:"hexo",demo:"https://hexo-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/hexo.svg",tagline:"Hexo is a fast, simple & powerful blog framework powered by Node.js.",description:"A Hexo site, created with the Hexo CLI.",website:"https://hexo.io",detectors:{every:[{matchPackage:"hexo"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `hexo generate`",value:"hexo generate"},devCommand:{value:"hexo server --port $PORT",placeholder:"hexo server"},outputDirectory:{value:"public"}},dependency:"hexo",getOutputDirName:async()=>"public"},{name:"Eleventy",slug:"eleventy",demo:"https://eleventy-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/eleventy.svg",tagline:"11ty is a simpler static site generator written in JavaScript, created to be an alternative to Jekyll.",description:"An Eleventy site, created with npm init.",website:"https://www.11ty.dev",detectors:{every:[{matchPackage:"@11ty/eleventy"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `npx @11ty/eleventy`",value:"npx @11ty/eleventy"},devCommand:{value:"npx @11ty/eleventy --serve --watch --port $PORT",placeholder:"npx @11ty/eleventy --serve"},outputDirectory:{value:"_site"}},dependency:"@11ty/eleventy",getOutputDirName:async()=>"_site",cachePattern:".cache/**"},{name:"Docusaurus (v2+)",slug:"docusaurus-2",demo:"https://docusaurus-2-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/docusaurus.svg",tagline:"Docusaurus makes it easy to maintain Open Source documentation websites.",description:"A static Docusaurus site that makes it easy to maintain OSS documentation.",website:"https://v2.docusaurus.io",detectors:{some:[{matchPackage:"@docusaurus/core"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `docusaurus build`",value:"docusaurus build"},devCommand:{value:"docusaurus start --port $PORT",placeholder:"docusaurus start"},outputDirectory:{value:"build"}},dependency:"@docusaurus/core",getOutputDirName:async dirPrefix=>{let base="build";try{let location=(0,import_path.join)(dirPrefix,base),content=await readdir(location,{withFileTypes:!0});if(content.length===1&&content[0].isDirectory())return(0,import_path.join)(base,content[0].name)}catch(error){console.error("Error detecting output directory: ",error)}return base},defaultRoutes:[{src:"^/[^./]+\\.[0-9a-f]{8}\\.(css|js)$",headers:{"cache-control":"max-age=31536000, immutable"},continue:!0},{src:"^/assets/images/[^/]+-[0-9a-f]{32}\\.(ico|svg|jpg|jpeg|png|gif|webp)$",headers:{"cache-control":"max-age=31536000, immutable"},continue:!0},{src:"^/assets/medias/[^/]+-[0-9a-f]{32}\\.(ogv|wav|mp3|m4a|aac|oga|flac)$",headers:{"cache-control":"max-age=31536000, immutable"},continue:!0},{src:"^/assets/files/[^/]+-[0-9a-f]{32}\\.(pdf|doc|docx|xls|xlsx|zip|rar)$",headers:{"cache-control":"max-age=31536000, immutable"},continue:!0},{src:"^/ideal-img/[^/]+\\.[0-9a-f]{7}\\.\\d+\\.(png|jpe?g|gif)$",headers:{"cache-control":"max-age=31536000, immutable"},continue:!0},{handle:"filesystem"},{src:".*",status:404,dest:"404.html"}]},{name:"Docusaurus (v1)",slug:"docusaurus",demo:"https://docusaurus-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/docusaurus.svg",tagline:"Docusaurus makes it easy to maintain Open Source documentation websites.",description:"A static Docusaurus site that makes it easy to maintain OSS documentation.",website:"https://docusaurus.io/",detectors:{some:[{matchPackage:"docusaurus"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `docusaurus-build`",value:"docusaurus-build"},devCommand:{value:"docusaurus-start --port $PORT",placeholder:"docusaurus-start"},outputDirectory:{value:"build"}},dependency:"docusaurus",getOutputDirName:async dirPrefix=>{let base="build";try{let location=(0,import_path.join)(dirPrefix,base),content=await readdir(location,{withFileTypes:!0});if(content.length===1&&content[0].isDirectory())return(0,import_path.join)(base,content[0].name)}catch(error){console.error("Error detecting output directory: ",error)}return base}},{name:"Preact",slug:"preact",demo:"https://preact-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/preact.svg",tagline:"Preact is a fast 3kB alternative to React with the same modern API.",description:"A Preact app, created with the Preact CLI.",website:"https://preactjs.com",detectors:{every:[{matchPackage:"preact-cli"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `preact build`",value:"preact build"},devCommand:{value:"preact watch --port $PORT",placeholder:"preact watch"},outputDirectory:{value:"build"}},dependency:"preact-cli",getOutputDirName:async()=>"build",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/index.html"}]},{name:"SolidStart (v1)",slug:"solidstart-1",demo:"https://solid-start-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/solid.svg",tagline:"Simple and performant reactivity for building user interfaces.",description:"A Solid app, created with SolidStart.",website:"https://start.solidjs.com",envPrefix:"VITE_",detectors:{every:[{matchPackage:"solid-js"},{matchPackage:"@solidjs/start"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `vinxi build`",value:"vinxi build"},devCommand:{value:"vinxi dev"},outputDirectory:{value:".output"}},getOutputDirName:async()=>".output"},{name:"SolidStart (v0)",slug:"solidstart",demo:"https://solid-start-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/solid.svg",tagline:"Simple and performant reactivity for building user interfaces.",description:"A Solid app, created with SolidStart.",website:"https://solidjs.com",envPrefix:"VITE_",sort:98,detectors:{every:[{matchPackage:"solid-js"},{matchPackage:"solid-start"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `solid-start build`",value:"solid-start build"},devCommand:{value:"solid-start dev"},outputDirectory:{value:".output"}},getOutputDirName:async()=>".output"},{name:"Dojo",slug:"dojo",demo:"https://dojo-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/dojo.svg",tagline:"Dojo is a modern progressive, TypeScript first framework.",description:"A Dojo app, created with the Dojo CLI's cli-create-app command.",website:"https://dojo.io",detectors:{some:[{matchPackage:"@dojo/framework"},{path:".dojorc"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `dojo build`",value:"dojo build"},devCommand:{value:"dojo build -m dev -w -s -p $PORT",placeholder:"dojo build -m dev -w -s"},outputDirectory:{value:"output/dist"}},dependency:"@dojo/cli",getOutputDirName:async()=>(0,import_path.join)("output","dist"),defaultRoutes:[{handle:"filesystem"},{src:"/service-worker.js",headers:{"cache-control":"s-maxage=0"},continue:!0},{src:"/(.*)",dest:"/index.html"}],defaulHeaders:[{source:"/service-worker.js",regex:"/service-worker.js",headers:{"cache-control":"s-maxage=0"},continue:!0}]},{name:"Ember.js",slug:"ember",demo:"https://ember-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/ember.svg",tagline:"Ember.js helps webapp developers be more productive out of the box.",description:"An Ember app, created with the Ember CLI.",website:"https://emberjs.com/",detectors:{some:[{matchPackage:"ember-source"},{matchPackage:"ember-cli"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `ember build`",value:"ember build"},devCommand:{value:"ember serve --port $PORT",placeholder:"ember serve"},outputDirectory:{value:"dist"}},dependency:"ember-cli",getOutputDirName:async()=>"dist",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/index.html"}]},{name:"Vue.js",slug:"vue",demo:"https://vue-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/vue.svg",tagline:"Vue.js is a versatile JavaScript framework that is as approachable as it is performant.",description:"A Vue.js app, created with the Vue CLI.",website:"https://vuejs.org",envPrefix:"VUE_APP_",detectors:{every:[{matchPackage:"@vue/cli-service"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `vue-cli-service build`",value:"vue-cli-service build"},devCommand:{value:"vue-cli-service serve --port $PORT",placeholder:"vue-cli-service serve"},outputDirectory:{value:"dist"}},dependency:"@vue/cli-service",getOutputDirName:async()=>"dist",defaultRoutes:[{src:"^/[^/]*\\.(js|txt|ico|json)",headers:{"cache-control":"max-age=300"},continue:!0},{src:"^/(img|js|css|fonts|media)/[^/]+\\.[0-9a-f]{8}\\.*",headers:{"cache-control":"max-age=31536000, immutable"},continue:!0},{handle:"filesystem"},{src:"^.*",dest:"/index.html"}]},{name:"Scully",slug:"scully",demo:"https://scully-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/scullyio-logo.svg",tagline:"Scully is a static site generator for Angular.",description:"The Static Site Generator for Angular apps.",website:"https://github.com/scullyio/scully",detectors:{every:[{matchPackage:"@scullyio/init"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `ng build && scully`",value:"ng build && scully"},devCommand:{value:"ng serve --port $PORT",placeholder:"ng serve"},outputDirectory:{value:"dist"}},dependency:"@scullyio/init",getOutputDirName:async()=>"dist/static"},{name:"Ionic Angular",slug:"ionic-angular",demo:"https://ionic-angular-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/ionic.svg",tagline:"Ionic Angular allows you to build mobile PWAs with Angular and the Ionic Framework.",description:"An Ionic Angular site, created with the Ionic CLI.",website:"https://ionicframework.com",detectors:{every:[{matchPackage:"@ionic/angular"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `ng build`",value:"ng build"},devCommand:{value:"ng serve --port $PORT"},outputDirectory:{value:"www"}},dependency:"@ionic/angular",getOutputDirName:async()=>"www",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/index.html"}]},{name:"Angular",slug:"angular",demo:"https://angular-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/angular.svg",tagline:"Angular is a TypeScript-based cross-platform framework from Google.",description:"An Angular app, created with the Angular CLI.",website:"https://angular.io",detectors:{every:[{matchPackage:"@angular/cli"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `ng build`",value:"ng build"},devCommand:{value:"ng serve --port $PORT",placeholder:"ng serve"},outputDirectory:{value:"dist"}},dependency:"@angular/cli",getOutputDirName:async dirPrefix=>{let base="dist";try{let location=(0,import_path.join)(dirPrefix,base),content=await readdir(location,{withFileTypes:!0});if(content.length===1&&content[0].isDirectory()){let potentialOutDir=(0,import_path.join)(base,content[0].name),potentialOutDirWithBrowser=(0,import_path.join)(potentialOutDir,"browser");return(0,import_fs.existsSync)(potentialOutDirWithBrowser)?potentialOutDirWithBrowser:potentialOutDir}}catch(error){console.error("Error detecting output directory: ",error)}return base},defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/index.html"}]},{name:"Polymer",slug:"polymer",demo:"https://polymer-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/polymer.svg",tagline:"Polymer is an open-source webapps library from Google, for building using Web Components.",description:"A Polymer app, created with the Polymer CLI.",website:"https://www.polymer-project.org/",detectors:{every:[{matchPackage:"polymer-cli"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `polymer build`",value:"polymer build"},devCommand:{value:"polymer serve --port $PORT",placeholder:"polymer serve"},outputDirectory:{value:"build"}},dependency:"polymer-cli",getOutputDirName:async dirPrefix=>{let base="build";try{let location=(0,import_path.join)(dirPrefix,base),paths=(await readdir(location)).filter(item=>!item.includes("."));return(0,import_path.join)(base,paths[0])}catch(error){console.error("Error detecting output directory: ",error)}return base},defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/index.html"}]},{name:"Svelte",slug:"svelte",demo:"https://svelte.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/svelte.svg",tagline:"Svelte lets you write high performance reactive apps with significantly less boilerplate.",description:"A basic Svelte app using the default template.",website:"https://svelte.dev",sort:3,detectors:{every:[{matchPackage:"svelte"},{matchPackage:"sirv-cli"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `rollup -c`",value:"rollup -c"},devCommand:{value:"rollup -c -w"},outputDirectory:{value:"public"}},dependency:"sirv-cli",getOutputDirName:async()=>"public",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/index.html"}]},{name:"SvelteKit (v0)",slug:"sveltekit",demo:"https://sveltekit-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/svelte.svg",screenshot:"https://py8fhxnkzwtsqdo9.public.blob.vercel-storage.com/front/import/sveltekit.png",tagline:"SvelteKit is a framework for building web applications of all sizes.",description:"A SvelteKit legacy app optimized Edge-first.",website:"https://kit.svelte.dev",supersedes:["vite"],sort:99,envPrefix:"VITE_",detectors:{every:[{path:"package.json",matchContent:'"(dev)?(d|D)ependencies":\\s*{[^}]*"@sveltejs\\/kit":\\s*"1\\.0\\.0-next\\.(\\d+)"[^}]*}'}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `svelte-kit build`",value:"svelte-kit build"},devCommand:{value:"svelte-kit dev --port $PORT",placeholder:"svelte-kit dev"},outputDirectory:{value:"public"}},getOutputDirName:async()=>"public"},{name:"SvelteKit",slug:"sveltekit-1",demo:"https://sveltekit-1-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/svelte.svg",screenshot:"https://py8fhxnkzwtsqdo9.public.blob.vercel-storage.com/front/import/sveltekit.png",tagline:"SvelteKit is a framework for building web applications of all sizes.",description:"A SvelteKit app optimized Edge-first.",website:"https://kit.svelte.dev",supersedes:["vite"],detectors:{every:[{path:"package.json",matchContent:'"(dev)?(d|D)ependencies":\\s*{[^}]*"@sveltejs\\/kit":\\s*".+?"[^}]*}'}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"vite build",value:"vite build"},devCommand:{placeholder:"vite dev",value:"vite dev --port $PORT"},outputDirectory:{value:"public"}},getOutputDirName:async()=>"public"},{name:"Ionic React",slug:"ionic-react",demo:"https://ionic-react-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/ionic.svg",tagline:"Ionic React allows you to build mobile PWAs with React and the Ionic Framework.",description:"An Ionic React site, created with the Ionic CLI.",website:"https://ionicframework.com",detectors:{every:[{matchPackage:"@ionic/react"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `react-scripts build`",value:"react-scripts build"},devCommand:{value:"react-scripts start"},outputDirectory:{value:"build"}},dependency:"@ionic/react",getOutputDirName:async()=>"build",defaultRoutes:[{src:"/static/(.*)",headers:{"cache-control":"s-maxage=31536000, immutable"},continue:!0},{src:"/service-worker.js",headers:{"cache-control":"s-maxage=0"},continue:!0},{src:"/sockjs-node/(.*)",dest:"/sockjs-node/$1"},{handle:"filesystem"},{src:"/static/(.*)",status:404,dest:"/404.html"},{src:"/(.*)",headers:{"cache-control":"s-maxage=0"},dest:"/index.html"}]},{name:"Create React App",slug:"create-react-app",demo:"https://create-react-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/react.svg",tagline:"Create React App allows you to get going with React in no time.",description:"A client-side React app created with create-react-app.",website:"https://create-react-app.dev",sort:4,envPrefix:"REACT_APP_",detectors:{some:[{matchPackage:"react-scripts"},{matchPackage:"react-dev-utils"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `react-scripts build`",value:"react-scripts build"},devCommand:{value:"react-scripts start"},outputDirectory:{value:"build"}},dependency:"react-scripts",getOutputDirName:async()=>"build",defaultRoutes:[{src:"/static/(.*)",headers:{"cache-control":"s-maxage=31536000, immutable"},continue:!0},{src:"/service-worker.js",headers:{"cache-control":"s-maxage=0"},continue:!0},{src:"/sockjs-node/(.*)",dest:"/sockjs-node/$1"},{handle:"filesystem"},{src:"/static/(.*)",status:404,dest:"/404.html"},{src:"/(.*)",headers:{"cache-control":"s-maxage=0"},dest:"/index.html"}]},{name:"Gridsome",slug:"gridsome",demo:"https://gridsome-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/gridsome.svg",tagline:"Gridsome is a Vue.js-powered framework for building websites & apps that are fast by default.",description:"A Gridsome app, created with the Gridsome CLI.",website:"https://gridsome.org/",detectors:{every:[{matchPackage:"gridsome"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `gridsome build`",value:"gridsome build"},devCommand:{value:"gridsome develop -p $PORT",placeholder:"gridsome develop"},outputDirectory:{value:"dist"}},dependency:"gridsome",getOutputDirName:async()=>"dist"},{name:"UmiJS",slug:"umijs",demo:"https://umijs-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/umi.svg",tagline:"UmiJS is an extensible enterprise-level React application framework.",description:"An UmiJS app, created using the Umi CLI.",website:"https://umijs.org",detectors:{every:[{matchPackage:"umi"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `umi build`",value:"umi build"},devCommand:{value:"umi dev --port $PORT",placeholder:"umi dev"},outputDirectory:{value:"dist"}},dependency:"umi",getOutputDirName:async()=>"dist",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/index.html"}]},{name:"Sapper",slug:"sapper",demo:"https://sapper-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/svelte.svg",tagline:"Sapper is a framework for building high-performance universal web apps with Svelte.",description:"A Sapper app, using the Sapper template.",website:"https://sapper.svelte.dev",detectors:{every:[{matchPackage:"sapper"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `sapper export`",value:"sapper export"},devCommand:{value:"sapper dev --port $PORT",placeholder:"sapper dev"},outputDirectory:{value:"__sapper__/export"}},dependency:"sapper",getOutputDirName:async()=>"__sapper__/export"},{name:"Saber",slug:"saber",logo:"https://api-frameworks.vercel.sh/framework-logos/saber.svg",tagline:"Saber is a framework for building static sites in Vue.js that supports data from any source.",description:"A Saber site, created with npm init.",website:"https://saber.egoist.dev",detectors:{every:[{matchPackage:"saber"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `saber build`",value:"saber build"},devCommand:{value:"saber --port $PORT",placeholder:"saber"},outputDirectory:{value:"public"}},dependency:"saber",getOutputDirName:async()=>"public",defaultRoutes:[{src:"/_saber/.*",headers:{"cache-control":"max-age=31536000, immutable"}},{handle:"filesystem"},{src:".*",status:404,dest:"404.html"}]},{name:"Stencil",slug:"stencil",demo:"https://stencil.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/stencil.svg",tagline:"Stencil is a powerful toolchain for building Progressive Web Apps and Design Systems.",description:"A Stencil site, created with the Stencil CLI.",website:"https://stenciljs.com/",detectors:{every:[{matchPackage:"@stencil/core"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `stencil build`",value:"stencil build"},devCommand:{value:"stencil build --dev --watch --serve --port $PORT",placeholder:"stencil build --dev --watch --serve"},outputDirectory:{value:"www"}},dependency:"@stencil/core",getOutputDirName:async()=>"www",defaultRoutes:[{src:"/assets/(.*)",headers:{"cache-control":"max-age=2592000"},continue:!0},{src:"/build/p-.*",headers:{"cache-control":"max-age=31536000, immutable"},continue:!0},{src:"/sw.js",headers:{"cache-control":"no-cache"},continue:!0},{handle:"filesystem"},{src:"/(.*)",dest:"/index.html"}]},{name:"Nuxt",slug:"nuxtjs",demo:"https://nuxtjs-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/nuxt.svg",screenshot:"https://py8fhxnkzwtsqdo9.public.blob.vercel-storage.com/front/import/nuxtjs.png",tagline:"Nuxt is the open source framework that makes full-stack development with Vue.js intuitive.",description:"A Nuxt app, bootstrapped with create-nuxt-app.",website:"https://nuxt.com",sort:2,envPrefix:"NUXT_ENV_",supersedes:["nitro"],detectors:{some:[{matchPackage:"nuxt"},{matchPackage:"nuxt3"},{matchPackage:"nuxt-edge"},{matchPackage:"nuxt-nightly"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `nuxt build`",value:"nuxt build"},devCommand:{value:"nuxt dev"},outputDirectory:{value:"dist"}},dependency:"nuxt",getOutputDirName:async()=>"dist",cachePattern:".nuxt/**",defaultRoutes:[{src:"/sw.js",headers:{"cache-control":"no-cache"},continue:!0},{src:"/_nuxt/(.*)",headers:{"cache-control":"public,max-age=31536000,immutable"},continue:!0},{handle:"filesystem"},{src:"/(.*)",dest:"/200.html"}]},{name:"RedwoodJS",slug:"redwoodjs",demo:"https://redwood-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/redwoodjs.svg",tagline:"RedwoodJS is a full-stack framework for the Jamstack.",description:"A RedwoodJS app, bootstraped with create-redwood-app.",website:"https://redwoodjs.com",envPrefix:"REDWOOD_ENV_",useRuntime:{src:"package.json",use:"@vercel/redwood"},ignoreRuntimes:["@vercel/node"],detectors:{every:[{matchPackage:"@redwoodjs/core"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{value:"yarn rw deploy vercel"},devCommand:{value:'yarn rw dev --fwd="--port=$PORT --open=false"',placeholder:"yarn rw dev"},outputDirectory:{placeholder:"RedwoodJS default"}},getOutputDirName:async()=>"public"},{name:"Hugo",slug:"hugo",demo:"https://hugo-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/hugo.svg",tagline:"Hugo is the world\u2019s fastest framework for building websites, written in Go.",description:"A Hugo site, created with the Hugo CLI.",website:"https://gohugo.io",detectors:{some:[{path:"config.yaml",matchContent:"baseURL"},{path:"config.toml",matchContent:"baseURL"},{path:"config.json",matchContent:"baseURL"}]},settings:{installCommand:{placeholder:"None"},buildCommand:{placeholder:"`npm run build` or `hugo --gc`",value:"hugo --gc"},devCommand:{value:"hugo server -D -w -p $PORT",placeholder:"hugo server -D"},outputDirectory:{placeholder:"`public` or `publishDir` from the `config` file"}},getOutputDirName:async dirPrefix=>{let config=await(0,import_read_config_file.readConfigFile)(["config.json","config.yaml","config.toml"].map(fileName=>(0,import_path.join)(dirPrefix,fileName)));return config&&config.publishDir||"public"},defaultVersion:"0.58.2"},{name:"Jekyll",slug:"jekyll",demo:"https://jekyll-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/jekyll.svg",tagline:"Jekyll makes it super easy to transform your plain text into static websites and blogs.",description:"A Jekyll site, created with the Jekyll CLI.",website:"https://jekyllrb.com/",detectors:{every:[{path:"_config.yml"}]},settings:{installCommand:{value:"bundle install"},buildCommand:{placeholder:"`npm run build` or `jekyll build`",value:"jekyll build"},devCommand:{value:"bundle exec jekyll serve --watch --port $PORT",placeholder:"bundle exec jekyll serve"},outputDirectory:{placeholder:"`_site` or `destination` from `_config.yml`"}},getOutputDirName:async dirPrefix=>{let config=await(0,import_read_config_file.readConfigFile)((0,import_path.join)(dirPrefix,"_config.yml"));return config&&config.destination||"_site"},cachePattern:"{vendor/bin,vendor/cache,vendor/bundle}/**"},{name:"Brunch",slug:"brunch",demo:"https://brunch-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/brunch.svg",tagline:"Brunch is a fast and simple webapp build tool with seamless incremental compilation for rapid development.",description:"A Brunch app, created with the Brunch CLI.",website:"https://brunch.io/",detectors:{some:[{matchPackage:"brunch"},{path:"brunch-config.js"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `brunch build --production`",value:"brunch build --production"},devCommand:{value:"brunch watch --server --port $PORT",placeholder:"brunch watch --server"},outputDirectory:{value:"public"}},getOutputDirName:async()=>"public"},{name:"Middleman",slug:"middleman",demo:"https://middleman-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/middleman.svg",tagline:"Middleman is a static site generator that uses all the shortcuts and tools in modern web development.",description:"A Middleman app, created with the Middleman CLI.",website:"https://middlemanapp.com/",detectors:{every:[{path:"config.rb"}]},settings:{installCommand:{value:"bundle install"},buildCommand:{placeholder:"`npm run build` or `bundle exec middleman build`",value:"bundle exec middleman build"},devCommand:{placeholder:"bundle exec middleman server",value:"bundle exec middleman server -p $PORT"},outputDirectory:{value:"build"}},getOutputDirName:async()=>"build",cachePattern:"{vendor/bin,vendor/cache,vendor/bundle}/**"},{name:"Zola",slug:"zola",demo:"https://zola-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/zola.svg",tagline:"Everything you need to make a static site engine in one binary.",description:'A Zola app, created with the "Getting Started" tutorial.',website:"https://www.getzola.org",detectors:{every:[{path:"config.toml",matchContent:"base_url"}]},settings:{installCommand:{placeholder:"None"},buildCommand:{value:"zola build"},devCommand:{placeholder:"zola serve",value:"zola serve --port $PORT"},outputDirectory:{value:"public"}},getOutputDirName:async()=>"public",defaultVersion:"0.13.0"},{name:"Hydrogen (v1)",slug:"hydrogen",demo:"https://hydrogen-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/hydrogen.svg",tagline:"React framework for headless commerce",description:"React framework for headless commerce",website:"https://hydrogen.shopify.dev",supersedes:["vite"],useRuntime:{src:"package.json",use:"@vercel/hydrogen"},envPrefix:"PUBLIC_",detectors:{some:[{matchPackage:"@shopify/hydrogen"},{path:"hydrogen.config.js"},{path:"hydrogen.config.ts"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{value:"shopify hydrogen build",placeholder:"`npm run build` or `shopify hydrogen build`"},devCommand:{value:"shopify hydrogen dev",placeholder:"shopify hydrogen dev"},outputDirectory:{value:"dist"}},dependency:"@shopify/hydrogen",getOutputDirName:async()=>"dist"},{name:"Vite",slug:"vite",demo:"https://vite-vue-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/vite.svg",tagline:"Vite is a new breed of frontend build tool that significantly improves the frontend development experience.",description:"A Vue.js app, created with Vite.",website:"https://vitejs.dev",supersedes:["ionic-react"],envPrefix:"VITE_",detectors:{every:[{matchPackage:"vite"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `vite build`",value:"vite build"},devCommand:{placeholder:"vite",value:"vite --port $PORT"},outputDirectory:{value:"dist"}},dependency:"vite",getOutputDirName:async()=>"dist"},{name:"TanStack Start",slug:"tanstack-start",logo:"https://api-frameworks.vercel.sh/framework-logos/tanstack-start.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/tanstack-start-dark.svg",tagline:"Full-stack Framework powered by TanStack Router for React and Solid.",description:"Full-document SSR, Streaming, Server Functions, bundling and more, powered by TanStack Router and Vite - Ready to deploy to your favorite hosting provider.",website:"https://tanstack.com/start",supersedes:["ionic-react","vite"],detectors:{every:[{matchPackage:"@tanstack/router-plugin"}],some:[{matchPackage:"@tanstack/react-start"},{matchPackage:"@tanstack/solid-start"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `vite build`",value:"vite build"},devCommand:{placeholder:"vite",value:"vite --port $PORT"},outputDirectory:{value:"dist"}},getOutputDirName:async()=>"dist"},{name:"TanStack Start",slug:"tanstack-start-lovable",logo:"https://api-frameworks.vercel.sh/framework-logos/tanstack-start.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/tanstack-start-dark.svg",platform:{name:"lovable",logo:"https://api-frameworks.vercel.sh/framework-logos/lovable.svg"},tagline:"Full-stack Framework powered by TanStack Router imported from Lovable",description:"Full-document SSR, Streaming, Server Functions, bundling and more, imported from Lovable",website:"https://lovable.dev/",supersedes:["tanstack-start","ionic-react","vite"],detectors:{every:[{matchPackage:"@lovable.dev/vite-tanstack-config"}],some:[{matchPackage:"@tanstack/react-start"},{matchPackage:"@tanstack/solid-start"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `vite build`",value:"vite build"},devCommand:{placeholder:"vite",value:"vite --port $PORT"},outputDirectory:{value:"dist"}},getOutputDirName:async()=>"dist"},{name:"VitePress",slug:"vitepress",demo:"https://vitepress-starter-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/vite.svg",tagline:"VitePress is VuePress' little brother, built on top of Vite.",description:"VuePress on top of Vite",website:"https://vitepress.vuejs.org/",detectors:{every:[{matchPackage:"vitepress"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `vitepress build docs`",value:"vitepress build docs"},devCommand:{value:"vitepress dev docs --port $PORT"},outputDirectory:{value:"docs/.vitepress/dist"}},getOutputDirName:async()=>"docs/.vitepress/dist"},{name:"VuePress",slug:"vuepress",demo:"https://vuepress-starter-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/vuepress.svg",tagline:"Vue-powered Static Site Generator",description:"Vue-powered Static Site Generator",website:"https://vuepress.vuejs.org/",detectors:{every:[{matchPackage:"vuepress"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `vuepress build src`",value:"vuepress build src"},devCommand:{value:"vuepress dev src --port $PORT"},outputDirectory:{value:"src/.vuepress/dist"}},getOutputDirName:async()=>"src/.vuepress/dist"},{name:"Parcel",slug:"parcel",demo:"https://parcel-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/parcel.svg",tagline:"Parcel is a zero configuration build tool for the web that scales to projects of any size and complexity.",description:"A vanilla web app built with Parcel.",website:"https://parceljs.org",detectors:{every:[{matchPackage:"parcel"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `parcel build`",value:"parcel build"},devCommand:{placeholder:"parcel",value:"parcel"},outputDirectory:{value:"dist"}},dependency:"parcel",getOutputDirName:async()=>"dist",defaultRoutes:[{src:"^/[^./]+\\.[0-9a-f]{8}\\.(css|js|png|jpg|webp|avif|svg)$",headers:{"cache-control":"s-maxage=31536000, immutable"},continue:!0},{handle:"filesystem"}]},{name:"FastAPI",slug:"fastapi",demo:"https://vercel-fastapi-gamma-smoky.vercel.app/",logo:"https://api-frameworks.vercel.sh/framework-logos/fastapi.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/fastapi.svg",tagline:"FastAPI framework, high performance, easy to learn, fast to code, ready for production",description:"FastAPI framework, high performance, easy to learn, fast to code, ready for production",website:"https://fastapi.tiangolo.com",supersedes:["python"],useRuntime:{src:"<detect>",use:"@vercel/python"},ignoreRuntimes:["@vercel/python"],detectors:{some:[{path:"requirements.txt",matchContent:"fastapi"},{path:"pyproject.toml",matchContent:"fastapi"},{path:"Pipfile",matchContent:"fastapi"}]},settings:{installCommand:{placeholder:"`pip install -r requirements.txt`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}]},{name:"Flask",slug:"flask",logo:"https://api-frameworks.vercel.sh/framework-logos/flask.svg",tagline:"The Python micro web framework",description:"A Flask app, ready for production",website:"https://flask.palletsprojects.com",supersedes:["python"],useRuntime:{src:"<detect>",use:"@vercel/python"},ignoreRuntimes:["@vercel/python"],detectors:{some:[{path:"requirements.txt",matchContent:"[Ff]lask"},{path:"pyproject.toml",matchContent:"[Ff]lask"},{path:"Pipfile",matchContent:"[Ff]lask"}]},settings:{installCommand:{placeholder:"`pip install -r requirements.txt`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}]},{name:"FastHTML",slug:"fasthtml",demo:"https://fasthtml-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/fasthtml.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/fasthtml-dark.svg",tagline:"The fastest way to create an HTML app",description:"A library for writing fast and scalable Starlette-powered web applications",website:"https://fastht.ml",supersedes:["python"],useRuntime:{src:"main.py",use:"@vercel/python"},detectors:{every:[{path:"requirements.txt",matchContent:"python-fasthtml"}]},settings:{installCommand:{placeholder:"`pip install`"},buildCommand:{placeholder:"None",value:null},devCommand:{value:"uvicorn main:app --reload"},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/main"}]},{name:"Django",slug:"django",logo:"https://api-frameworks.vercel.sh/framework-logos/django.svg",tagline:"Django is a high-level Python web framework that encourages rapid development and clean, pragmatic design. ",description:"A Django project served via the Python Runtime.",website:"https://www.djangoproject.com",supersedes:["python"],useRuntime:{src:"<detect>",use:"@vercel/python"},ignoreRuntimes:["@vercel/python"],detectors:{some:[{path:"requirements.txt",matchContent:"[Dd]jango"},{path:"pyproject.toml",matchContent:"[Dd]jango"},{path:"Pipfile",matchContent:"[Dd]jango"},{path:"manage.py",matchContent:"DJANGO_SETTINGS_MODULE"}]},settings:{installCommand:{placeholder:"`pip install -r requirements.txt`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}]},{name:"Ash",slug:"ash",logo:"https://api-frameworks.vercel.sh/framework-logos/ash.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/ash-dark.svg",tagline:"A filesystem-first framework for durable backend agents on Vercel.",description:"An Ash app: agents authored as a directory of files, compiled and served on Vercel.",detectors:{every:[{path:"package.json",matchContent:'"(dev)?(d|D)ependencies":\\s*{[^}]*"experimental-ash":\\s*".+?"[^}]*}'}]},settings:{installCommand:{placeholder:"`pnpm install`, `yarn install`, or `npm install`"},buildCommand:{value:"ash build",placeholder:"`npm run build` or `ash build`"},devCommand:{value:"ash dev",placeholder:"ash dev"},outputDirectory:{value:".output"}},getOutputDirName:async()=>".output",experimental:!0},{name:"Factory (Eve)",slug:"factory-eve",logo:"https://api-frameworks.vercel.sh/framework-logos/eve.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/eve-dark.svg",tagline:"A software factory built with Eve.",description:"A Factory app built with the Eve agent framework.",supersedes:["eve"],detectors:{every:[{matchPackage:"eve"},{matchPackage:"@vercel/factory"}]},settings:{installCommand:{placeholder:"`pnpm install`, `yarn install`, or `npm install`"},buildCommand:{value:"eve build",placeholder:"`npm run build` or `eve build`"},devCommand:{value:"eve dev",placeholder:"eve dev"},outputDirectory:{value:".output"}},getOutputDirName:async()=>".output"},{name:"eve",slug:"eve",logo:"https://api-frameworks.vercel.sh/framework-logos/eve.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/eve-dark.svg",tagline:"A filesystem-first framework for durable backend agents on Vercel.",description:"An eve app: agents authored as a directory of files, compiled and served on Vercel.",detectors:{every:[{path:"package.json",matchContent:'"(dev)?(d|D)ependencies":\\s*{[^}]*"eve":\\s*".+?"[^}]*}'}]},settings:{installCommand:{placeholder:"`pnpm install`, `yarn install`, or `npm install`"},buildCommand:{value:"eve build",placeholder:"`npm run build` or `eve build`"},devCommand:{value:"eve dev",placeholder:"eve dev"},outputDirectory:{value:".output"}},getOutputDirName:async()=>".output"},{name:"Sanity",slug:"sanity",demo:"https://template-studio-clean.sanity.dev",logo:"https://api-frameworks.vercel.sh/framework-logos/sanity.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/sanity-dark.svg",tagline:"The back-end built for AI content operations. Power web, mobile, and agentic applications at scale.",description:"A Sanity Studio",website:"https://www.sanity.io",envPrefix:"SANITY_STUDIO_",detectors:{some:[{path:"sanity.config.js"},{path:"sanity.config.jsx"},{path:"sanity.config.ts"},{path:"sanity.config.tsx"}],every:[{matchPackage:"sanity"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `sanity build`",value:"sanity build"},devCommand:{value:"sanity dev --port $PORT"},outputDirectory:{value:"dist"}},dependency:"sanity",getOutputDirName:async()=>"dist",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/index.html"}]},{name:"Sanity (v2 - legacy)",slug:"sanity-v2",demo:"https://sanity-studio-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/sanity-v2.svg",tagline:"The structured content platform.",description:"A Sanity Studio",website:"https://www.sanity.io",envPrefix:"SANITY_STUDIO_",detectors:{some:[{path:"sanity.json"}],every:[{path:"package.json",matchContent:'"(dev)?(d|D)ependencies":\\s*{[^}]*"@sanity/cli":\\s*"\\^?2\\..*"[^}]*}'}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `sanity build`",value:"sanity build"},devCommand:{value:"sanity start --port $PORT"},outputDirectory:{value:"dist"}},dependency:"@sanity/cli",getOutputDirName:async()=>"dist",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/index.html"}]},{name:"Storybook",slug:"storybook",logo:"https://api-frameworks.vercel.sh/framework-logos/storybook.svg",tagline:"Frontend workshop for UI development",description:"Storybook is a frontend workshop for building UI components and pages in isolation.",website:"https://storybook.js.org",ignoreRuntimes:["@vercel/next","@vercel/node"],disableRootMiddleware:!0,detectionConfidence:"weak",detectors:{every:[{matchPackage:"storybook"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{value:"storybook build",ignorePackageJsonScript:!0},devCommand:{value:"storybook dev -p $PORT"},outputDirectory:{value:"storybook-static"}},getOutputDirName:async()=>"storybook-static"},{name:"Nitro",slug:"nitro",logo:"https://api-frameworks.vercel.sh/framework-logos/nitro.svg",demo:"https://nitro-template.vercel.app",tagline:"Nitro is a next generation server toolkit.",description:"Nitro lets you create web servers that run on multiple platforms.",website:"https://nitro.build/",detectors:{some:[{matchPackage:"nitropack"},{matchPackage:"nitro"}]},supersedes:["vite"],settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `nitro build`",value:"nitro build"},devCommand:{value:"nitro dev"},outputDirectory:{value:"dist"}},getOutputDirName:async()=>"public"},{name:"Hono",slug:"hono",logo:"https://api-frameworks.vercel.sh/framework-logos/hono.svg",demo:"https://hono.vercel.dev",tagline:"Web framework built on Web Standards",description:"Fast, lightweight, built on Web Standards. Support for any JavaScript runtime.",website:"https://hono.dev",supersedes:["node"],useRuntime:{src:"index.js",use:"@vercel/hono"},defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}],detectors:{every:[{matchPackage:"hono"}],some:[{path:"app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},dependency:"hono",getOutputDirName:async()=>"public"},{name:"Express",slug:"express",logo:"https://api-frameworks.vercel.sh/framework-logos/express.svg",demo:"https://express-vercel-example-demo.vercel.app/",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/express-dark.svg",tagline:"Fast, unopinionated, minimalist web framework for Node.js",description:"Fast, unopinionated, minimalist web framework for Node.js",website:"https://expressjs.com",supersedes:["node"],useRuntime:{src:"index.js",use:"@vercel/express"},defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}],detectors:{every:[{matchPackage:"express"}],some:[{path:"app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},dependency:"express",getOutputDirName:async()=>"public"},{name:"H3",slug:"h3",logo:"https://api-frameworks.vercel.sh/framework-logos/h3.svg",tagline:"Universal, Tiny, and Fast Servers",description:"H(TTP) server framework built on top of web standards for high performance and composability.",website:"https://h3.dev/",supersedes:["node"],useRuntime:{src:"index.js",use:"@vercel/h3"},defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}],detectors:{every:[{matchPackage:"h3"}],some:[{path:"app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},dependency:"h3",getOutputDirName:async()=>"public"},{name:"Koa",slug:"koa",logo:"https://api-frameworks.vercel.sh/framework-logos/koa.svg",tagline:"Expressive middleware for Node.js using ES2017 async functions",description:"Koa is a new web framework designed by the team behind Express, which aims to be a smaller, more expressive, and more robust foundation for web applications and APIs.",website:"https://koajs.com",supersedes:["node"],useRuntime:{src:"index.js",use:"@vercel/koa"},defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}],detectors:{every:[{matchPackage:"koa"}],some:[{path:"app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},dependency:"koa",getOutputDirName:async()=>"public"},{name:"NestJS",slug:"nestjs",logo:"https://api-frameworks.vercel.sh/framework-logos/nestjs.svg",tagline:"Framework for building efficient, scalable Node.js server-side applications",description:"A progressive Node.js framework for building efficient, reliable and scalable server-side applications.",website:"https://nestjs.com/",supersedes:["node"],useRuntime:{src:"index.js",use:"@vercel/nestjs"},defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}],detectors:{every:[{matchPackage:"@nestjs/core"}],some:[{path:"src/main.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/main.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/main.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/main.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/main.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/main.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"main.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"main.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"main.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"main.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"main.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"main.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},dependency:"nestjs",getOutputDirName:async()=>"public"},{name:"Elysia",slug:"elysia",logo:"https://api-frameworks.vercel.sh/framework-logos/elysia.svg",tagline:"Ergonomic framework for humans",description:"TypeScript with End-to-End Type Safety, type integrity, and exceptional developer experience. Supercharged by Bun.",website:"https://elysiajs.com/",supersedes:["node"],useRuntime:{src:"index.js",use:"@vercel/elysia"},defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}],detectors:{every:[{matchPackage:"elysia"}],some:[{path:"app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public"},{name:"Fastify",slug:"fastify",logo:"https://api-frameworks.vercel.sh/framework-logos/fastify.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/fastify-dark.svg",tagline:"Fast and low overhead web framework, for Node.js",description:"Fastify is a web framework highly focused on providing the best developer experience with the least overhead and a powerful plugin architecture.",website:"https://fastify.dev/",supersedes:["node"],useRuntime:{src:"index.js",use:"@vercel/fastify"},defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}],detectors:{every:[{matchPackage:"fastify"}],some:[{path:"app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public"},{name:"xmcp",slug:"xmcp",logo:"https://api-frameworks.vercel.sh/framework-logos/xmcp.svg",demo:"https://xmcp-template.vercel.app/",tagline:"The MCP framework for building AI-powered tools",description:"A framework for building Model Context Protocol servers with zero configuration.",website:"https://xmcp.dev",detectors:{some:[{path:"xmcp.config.ts"},{path:"xmcp.config.js"},{matchPackage:"xmcp"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `xmcp build`",value:"xmcp build --vercel"},devCommand:{value:"xmcp dev",placeholder:"xmcp dev"},outputDirectory:{value:"dist"}},dependency:"xmcp",getOutputDirName:async()=>"dist"},{name:"Python",slug:"python",runtimeFramework:!0,logo:"https://api-frameworks.vercel.sh/framework-logos/python.svg",tagline:"Python is a programming language that lets you work quickly and integrate systems more effectively.",description:"A generic Python application deployed as a serverless function.",website:"https://python.org",useRuntime:{src:"<detect>",use:"@vercel/python"},ignoreRuntimes:["@vercel/python"],detectors:{some:[{path:"requirements.txt"},{path:"pyproject.toml"},{path:"Pipfile"}]},settings:{installCommand:{placeholder:"`pip install -r requirements.txt`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}]},{name:"Ruby",slug:"ruby",experimental:!0,runtimeFramework:!0,logo:"https://api-frameworks.vercel.sh/framework-logos/ruby.svg",tagline:"A dynamic, open source programming language with a focus on simplicity and productivity.",description:"A generic Ruby application deployed as a serverless function.",website:"https://www.ruby-lang.org",useRuntime:{src:"config.ru",use:"@vercel/ruby"},ignoreRuntimes:["@vercel/ruby"],detectors:{every:[{path:"config.ru"},{path:"Gemfile"}]},settings:{installCommand:{placeholder:"`bundle install`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/config"}]},{name:"Rust",slug:"rust",runtimeFramework:!0,logo:"https://api-frameworks.vercel.sh/framework-logos/rust.svg",tagline:"A language empowering everyone to build reliable and efficient software.",description:"A generic Rust application deployed as a serverless function.",website:"https://www.rust-lang.org",useRuntime:{src:"src/main.rs",use:"@vercel/rust"},ignoreRuntimes:["@vercel/rust"],detectors:{every:[{path:"Cargo.toml"},{path:"src/main.rs"}]},settings:{installCommand:{placeholder:"None"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"`cargo run`",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public"},{name:"Axum",slug:"axum",experimental:!0,supersedes:["rust"],logo:"https://api-frameworks.vercel.sh/framework-logos/axum.svg",tagline:"Ergonomic and modular web framework built with Tokio, Tower, and Hyper.",description:"An Axum application deployed as a serverless function.",website:"https://github.com/tokio-rs/axum",useRuntime:{src:"src/main.rs",use:"@vercel/rust"},ignoreRuntimes:["@vercel/rust"],detectors:{every:[{path:"Cargo.toml",matchContent:"axum\\s*="},{path:"src/main.rs"}]},settings:{installCommand:{placeholder:"None"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"`cargo run`",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public"},{name:"Actix Web",slug:"actix-web",experimental:!0,runtimeFramework:!0,supersedes:["rust"],logo:"https://api-frameworks.vercel.sh/framework-logos/actix-web.svg",tagline:"A powerful, pragmatic, and extremely fast web framework for Rust.",description:"An Actix Web application deployed as a serverless function.",website:"https://actix.rs",useRuntime:{src:"src/main.rs",use:"@vercel/rust"},ignoreRuntimes:["@vercel/rust"],detectors:{every:[{path:"Cargo.toml",matchContent:"actix-web\\s*="},{path:"src/main.rs"}]},settings:{installCommand:{placeholder:"None"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"`cargo run`",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public"},{name:"Bun",slug:"bun",runtimeFramework:!0,experimental:!0,supersedes:["node"],logo:"https://api-frameworks.vercel.sh/framework-logos/bun.svg",tagline:"Bun is a fast all-in-one JavaScript runtime, bundler, and package manager.",description:"A Bun application deployed as a serverless function.",website:"https://bun.com",useRuntime:{src:"package.json",use:"@vercel/backends"},ignoreRuntimes:["@vercel/node"],detectors:{every:[{path:"bun.lock"}],some:[{path:"server.cjs"},{path:"server.js"},{path:"server.mjs"},{path:"server.mts"},{path:"server.ts"},{path:"server.cts"},{path:"src/server.cjs"},{path:"src/server.js"},{path:"src/server.mjs"},{path:"src/server.mts"},{path:"src/server.ts"},{path:"src/server.cts"}]},settings:{installCommand:{value:"bun install",placeholder:"bun install"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"`bun dev`, `bun run dev`, or `bun --hot server.ts`",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}]},{name:"Node",slug:"node",runtimeFramework:!0,logo:"https://api-frameworks.vercel.sh/framework-logos/node.svg",tagline:"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine.",description:"A generic Node.js application deployed as a serverless function.",website:"https://nodejs.org",useRuntime:{src:"package.json",use:"@vercel/backends"},ignoreRuntimes:["@vercel/node"],detectors:{some:[{path:"server.cjs"},{path:"server.js"},{path:"server.mjs"},{path:"server.mts"},{path:"server.ts"},{path:"server.cts"},{path:"src/server.cjs"},{path:"src/server.js"},{path:"src/server.mjs"},{path:"src/server.mts"},{path:"src/server.ts"},{path:"src/server.cts"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"`npm run dev`, `node server.js`, or `npx ts-node server.ts`",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}]},{name:"Go",slug:"go",runtimeFramework:!0,logo:"https://api-frameworks.vercel.sh/framework-logos/go.svg",tagline:"An open-source programming language supported by Google.",description:"A generic Go application deployed as a serverless function.",website:"https://go.dev",useRuntime:{src:"index.go",use:"@vercel/go"},ignoreRuntimes:["@vercel/go"],detectors:{every:[{path:"go.mod"}],some:[{path:"main.go"},{path:"cmd/api/main.go"},{path:"cmd/server/main.go"}]},settings:{installCommand:{placeholder:"`go mod download`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"`go run .` or `go run ./cmd/api`",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public"},{name:"Services",slug:"services",logo:"https://api-frameworks.vercel.sh/framework-logos/services.svg",tagline:"Multiple services deployed as serverless functions within your project.",description:"Multiple services deployed as serverless functions within your project.",website:"https://vercel.com",settings:{installCommand:{placeholder:"None"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public"},{name:"Mastra",slug:"mastra",logo:"https://api-frameworks.vercel.sh/framework-logos/mastra.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/mastra-dark.svg",tagline:"Build AI agents with a modern TypeScript stack",description:"Mastra is a framework for building AI-powered apps and agents with workflows, memory, streaming, evals, tracing, and Studio, an interactive UI for dev and testing.",website:"https://mastra.ai",detectors:{every:[{matchPackage:"mastra"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `mastra build`",value:"mastra build"},devCommand:{value:"mastra dev"},outputDirectory:{value:".mastra"}},getOutputDirName:async()=>".mastra"},{name:"Other",slug:null,logo:"https://api-frameworks.vercel.sh/framework-logos/other.svg",description:"No framework or an unoptimized framework.",settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run vercel-build` or `npm run build`",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{placeholder:"`public` if it exists, or `.`"}},getOutputDirName:async()=>"public"}],frameworkList=frameworks,frameworks_default=frameworkList}});export{require_dist2 as require_dist,require_frameworks};
|
|
67
|
+
`:str}var index_default={parse,stringify,TomlDate,TomlError};}});var require_read_config_file=__commonJS({"../../packages/frameworks/dist/read-config-file.js"(exports,module){"use strict";var __create=Object.create,__defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),read_config_file_exports={};__export(read_config_file_exports,{readConfigFile:()=>readConfigFile});module.exports=__toCommonJS(read_config_file_exports);var import_js_yaml=__toESM(require_js_yaml2()),import_smol_toml=require_dist2(),import_fs=__require("fs"),import_error_utils=require_dist(),{readFile}=import_fs.promises;async function readFileOrNull(file){try{return await readFile(file)}catch(error){if(!(0,import_error_utils.isErrnoException)(error)||error.code!=="ENOENT")throw error}return null}async function readConfigFile(files){files=Array.isArray(files)?files:[files];for(let name of files){let data=await readFileOrNull(name);if(data){let str=data.toString("utf8");if(name.endsWith(".json"))return JSON.parse(str);if(name.endsWith(".toml"))return(0,import_smol_toml.parse)(str);if(name.endsWith(".yaml")||name.endsWith(".yml"))return import_js_yaml.default.safeLoad(str,{filename:name})}}return null}}});var require_types=__commonJS({"../../packages/frameworks/dist/types.js"(exports,module){"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),types_exports={};module.exports=__toCommonJS(types_exports)}});var require_frameworks=__commonJS({"../../packages/frameworks/dist/frameworks.js"(exports,module){"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__reExport=(target,mod,secondTarget)=>(__copyProps(target,mod,"default"),secondTarget&&__copyProps(secondTarget,mod,"default")),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),frameworks_exports={};__export(frameworks_exports,{default:()=>frameworks_default,frameworkList:()=>frameworkList,frameworks:()=>frameworks});module.exports=__toCommonJS(frameworks_exports);var import_path=__require("path"),import_fs=__require("fs"),import_read_config_file=require_read_config_file();__reExport(frameworks_exports,require_types(),module.exports);var{readdir,readFile,unlink}=import_fs.promises,frameworks=[{name:"Container",slug:"container",runtimeFramework:!0,logo:"https://api-frameworks.vercel.sh/framework-logos/container.svg",tagline:"Deploy any project as a container image built from a Dockerfile.",description:"A project deployed as a container image, built from a Dockerfile or Containerfile.",website:"https://docs.docker.com/reference/dockerfile/",useRuntime:{src:"<detect>",use:"@vercel/container"},detectors:{some:[{path:"Dockerfile.vercel"},{path:"Containerfile.vercel"},{path:"Dockerfile",fallback:!0},{path:"Containerfile",fallback:!0}]},settings:{installCommand:{placeholder:"None",value:null},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{placeholder:"None"}},getOutputDirName:async()=>"public"},{name:"Blitz.js (Legacy)",slug:"blitzjs",demo:"https://blitz-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/blitz.svg",tagline:"Blitz.js: The Fullstack React Framework",description:"A brand new Blitz.js app - the result of running `npx blitz@0.45.4 new`.",website:"https://blitzjs.com",envPrefix:"NEXT_PUBLIC_",useRuntime:{src:"package.json",use:"@vercel/next"},detectors:{some:[{path:"blitz.config.js"},{path:"blitz.config.ts"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `blitz build`",value:"blitz build"},devCommand:{value:"blitz start"},outputDirectory:{placeholder:"Next.js default"}},getOutputDirName:async()=>"public"},{name:"Next.js",slug:"nextjs",demo:"https://nextjs-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/next.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/next-dark.svg",screenshot:"https://py8fhxnkzwtsqdo9.public.blob.vercel-storage.com/front/import/nextjs.png",tagline:"Next.js makes you productive with React instantly \u2014 whether you want to build static or dynamic sites.",description:"A Next.js app and a Serverless Function API.",website:"https://nextjs.org",sort:1,envPrefix:"NEXT_PUBLIC_",useRuntime:{src:"package.json",use:"@vercel/next"},detectors:{every:[{matchPackage:"next"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `next build`",value:"next build"},devCommand:{value:"next dev --port $PORT",placeholder:"next"},outputDirectory:{placeholder:"Next.js default"}},recommendedIntegrations:[{id:"oac_5lUsiANun1DEzgLg0NZx5Es3",dependencies:["next-plugin-sentry","next-sentry-source-maps"]}],getOutputDirName:async()=>"public",cachePattern:".next/cache/**"},{name:"Gatsby.js",slug:"gatsby",demo:"https://gatsby.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/gatsby.svg",tagline:"Gatsby helps developers build blazing fast websites and apps with React.",description:"A Gatsby starter app with an API Route.",website:"https://gatsbyjs.org",sort:5,envPrefix:"GATSBY_",detectors:{every:[{matchPackage:"gatsby"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `gatsby build`",value:"gatsby build"},devCommand:{value:"gatsby develop --port $PORT",placeholder:"gatsby develop"},outputDirectory:{value:"public"}},dependency:"gatsby",getOutputDirName:async()=>"public",defaultRoutes:async dirPrefix=>{try{let nowRoutesPath=(0,import_path.join)(dirPrefix,"public","__now_routes_g4t5bY.json"),content=await readFile(nowRoutesPath,"utf8"),nowRoutes=JSON.parse(content);try{await unlink(nowRoutesPath)}catch{}return nowRoutes}catch{return[{src:"^/static/(.*)$",headers:{"cache-control":"public,max-age=31536000,immutable"},continue:!0},{src:"^/.*\\.(js|css)$",headers:{"cache-control":"public,max-age=31536000,immutable"},continue:!0},{src:"^/(sw\\.js|app-data\\.json|.*\\.html|page-data/.*)$",headers:{"cache-control":"public,max-age=0,must-revalidate"},continue:!0},{handle:"filesystem"},{src:".*",status:404,dest:"404.html"}]}},cachePattern:"{.cache,public}/**"},{name:"Remix",slug:"remix",demo:"https://remix-run-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/remix-no-shadow.svg",tagline:"Build Better Websites",description:"A new Remix app \u2014 the result of running `npx create-remix`.",website:"https://remix.run",sort:6,supersedes:["hydrogen","vite","node"],useRuntime:{src:"package.json",use:"@vercel/remix-builder"},ignoreRuntimes:["@vercel/node"],detectors:{some:[{matchPackage:"@remix-run/dev"},{path:"remix.config.js"},{path:"remix.config.mjs"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{value:"remix build",placeholder:"`npm run build` or `remix build`"},devCommand:{value:"remix dev",placeholder:"remix dev"},outputDirectory:{value:"public"}},dependency:"remix",getOutputDirName:async()=>"public"},{name:"React Router",slug:"react-router",demo:"https://react-router-v7-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/react-router.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/react-router-dark.svg",tagline:"Declarative routing for React",description:"A user-obsessed, standards-focused, multi-strategy router you can deploy anywhere.",website:"https://reactrouter.com",sort:7,supersedes:["hydrogen","vite","node"],useRuntime:{src:"package.json",use:"@vercel/remix-builder"},ignoreRuntimes:["@vercel/node"],detectors:{some:[{path:"vite.config.js",matchContent:"@react-router/dev/vite"},{path:"vite.config.ts",matchContent:"@react-router/dev/vite"},{path:"react-router.config.js"},{path:"react-router.config.ts"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{value:"react-router build",placeholder:"`npm run build` or `react-router build`"},devCommand:{value:"react-router dev",placeholder:"react-router dev"},outputDirectory:{value:"build"}},dependency:"react-router",getOutputDirName:async()=>"build"},{name:"Astro",slug:"astro",demo:"https://astro-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/astro.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/astro-dark.svg",tagline:"Astro is a new kind of static site builder for the modern web. Powerful developer experience meets lightweight output.",description:"An Astro site, using the basics starter kit.",website:"https://astro.build",envPrefix:"PUBLIC_",detectors:{every:[{matchPackage:"astro"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{value:"astro build",placeholder:"`npm run build` or `astro build`"},devCommand:{value:"astro dev --port $PORT",placeholder:"astro dev"},outputDirectory:{value:"dist"}},dependency:"astro",getOutputDirName:async()=>"dist",defaultRoutes:[{src:"^/assets/(.*)$",headers:{"cache-control":"public, max-age=31536000, immutable"},continue:!0},{src:"^/_astro/(.*)$",headers:{"cache-control":"public, max-age=31536000, immutable"},continue:!0}]},{name:"Hexo",slug:"hexo",demo:"https://hexo-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/hexo.svg",tagline:"Hexo is a fast, simple & powerful blog framework powered by Node.js.",description:"A Hexo site, created with the Hexo CLI.",website:"https://hexo.io",detectors:{every:[{matchPackage:"hexo"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `hexo generate`",value:"hexo generate"},devCommand:{value:"hexo server --port $PORT",placeholder:"hexo server"},outputDirectory:{value:"public"}},dependency:"hexo",getOutputDirName:async()=>"public"},{name:"Eleventy",slug:"eleventy",demo:"https://eleventy-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/eleventy.svg",tagline:"11ty is a simpler static site generator written in JavaScript, created to be an alternative to Jekyll.",description:"An Eleventy site, created with npm init.",website:"https://www.11ty.dev",detectors:{every:[{matchPackage:"@11ty/eleventy"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `npx @11ty/eleventy`",value:"npx @11ty/eleventy"},devCommand:{value:"npx @11ty/eleventy --serve --watch --port $PORT",placeholder:"npx @11ty/eleventy --serve"},outputDirectory:{value:"_site"}},dependency:"@11ty/eleventy",getOutputDirName:async()=>"_site",cachePattern:".cache/**"},{name:"Docusaurus (v2+)",slug:"docusaurus-2",demo:"https://docusaurus-2-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/docusaurus.svg",tagline:"Docusaurus makes it easy to maintain Open Source documentation websites.",description:"A static Docusaurus site that makes it easy to maintain OSS documentation.",website:"https://v2.docusaurus.io",detectors:{some:[{matchPackage:"@docusaurus/core"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `docusaurus build`",value:"docusaurus build"},devCommand:{value:"docusaurus start --port $PORT",placeholder:"docusaurus start"},outputDirectory:{value:"build"}},dependency:"@docusaurus/core",getOutputDirName:async dirPrefix=>{let base="build";try{let location=(0,import_path.join)(dirPrefix,base),content=await readdir(location,{withFileTypes:!0});if(content.length===1&&content[0].isDirectory())return(0,import_path.join)(base,content[0].name)}catch(error){console.error("Error detecting output directory: ",error)}return base},defaultRoutes:[{src:"^/[^./]+\\.[0-9a-f]{8}\\.(css|js)$",headers:{"cache-control":"max-age=31536000, immutable"},continue:!0},{src:"^/assets/images/[^/]+-[0-9a-f]{32}\\.(ico|svg|jpg|jpeg|png|gif|webp)$",headers:{"cache-control":"max-age=31536000, immutable"},continue:!0},{src:"^/assets/medias/[^/]+-[0-9a-f]{32}\\.(ogv|wav|mp3|m4a|aac|oga|flac)$",headers:{"cache-control":"max-age=31536000, immutable"},continue:!0},{src:"^/assets/files/[^/]+-[0-9a-f]{32}\\.(pdf|doc|docx|xls|xlsx|zip|rar)$",headers:{"cache-control":"max-age=31536000, immutable"},continue:!0},{src:"^/ideal-img/[^/]+\\.[0-9a-f]{7}\\.\\d+\\.(png|jpe?g|gif)$",headers:{"cache-control":"max-age=31536000, immutable"},continue:!0},{handle:"filesystem"},{src:".*",status:404,dest:"404.html"}]},{name:"Docusaurus (v1)",slug:"docusaurus",demo:"https://docusaurus-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/docusaurus.svg",tagline:"Docusaurus makes it easy to maintain Open Source documentation websites.",description:"A static Docusaurus site that makes it easy to maintain OSS documentation.",website:"https://docusaurus.io/",detectors:{some:[{matchPackage:"docusaurus"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `docusaurus-build`",value:"docusaurus-build"},devCommand:{value:"docusaurus-start --port $PORT",placeholder:"docusaurus-start"},outputDirectory:{value:"build"}},dependency:"docusaurus",getOutputDirName:async dirPrefix=>{let base="build";try{let location=(0,import_path.join)(dirPrefix,base),content=await readdir(location,{withFileTypes:!0});if(content.length===1&&content[0].isDirectory())return(0,import_path.join)(base,content[0].name)}catch(error){console.error("Error detecting output directory: ",error)}return base}},{name:"Preact",slug:"preact",demo:"https://preact-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/preact.svg",tagline:"Preact is a fast 3kB alternative to React with the same modern API.",description:"A Preact app, created with the Preact CLI.",website:"https://preactjs.com",detectors:{every:[{matchPackage:"preact-cli"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `preact build`",value:"preact build"},devCommand:{value:"preact watch --port $PORT",placeholder:"preact watch"},outputDirectory:{value:"build"}},dependency:"preact-cli",getOutputDirName:async()=>"build",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/index.html"}]},{name:"SolidStart (v1)",slug:"solidstart-1",demo:"https://solid-start-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/solid.svg",tagline:"Simple and performant reactivity for building user interfaces.",description:"A Solid app, created with SolidStart.",website:"https://start.solidjs.com",envPrefix:"VITE_",detectors:{every:[{matchPackage:"solid-js"},{matchPackage:"@solidjs/start"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `vinxi build`",value:"vinxi build"},devCommand:{value:"vinxi dev"},outputDirectory:{value:".output"}},getOutputDirName:async()=>".output"},{name:"SolidStart (v0)",slug:"solidstart",demo:"https://solid-start-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/solid.svg",tagline:"Simple and performant reactivity for building user interfaces.",description:"A Solid app, created with SolidStart.",website:"https://solidjs.com",envPrefix:"VITE_",sort:98,detectors:{every:[{matchPackage:"solid-js"},{matchPackage:"solid-start"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `solid-start build`",value:"solid-start build"},devCommand:{value:"solid-start dev"},outputDirectory:{value:".output"}},getOutputDirName:async()=>".output"},{name:"Dojo",slug:"dojo",demo:"https://dojo-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/dojo.svg",tagline:"Dojo is a modern progressive, TypeScript first framework.",description:"A Dojo app, created with the Dojo CLI's cli-create-app command.",website:"https://dojo.io",detectors:{some:[{matchPackage:"@dojo/framework"},{path:".dojorc"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `dojo build`",value:"dojo build"},devCommand:{value:"dojo build -m dev -w -s -p $PORT",placeholder:"dojo build -m dev -w -s"},outputDirectory:{value:"output/dist"}},dependency:"@dojo/cli",getOutputDirName:async()=>(0,import_path.join)("output","dist"),defaultRoutes:[{handle:"filesystem"},{src:"/service-worker.js",headers:{"cache-control":"s-maxage=0"},continue:!0},{src:"/(.*)",dest:"/index.html"}],defaulHeaders:[{source:"/service-worker.js",regex:"/service-worker.js",headers:{"cache-control":"s-maxage=0"},continue:!0}]},{name:"Ember.js",slug:"ember",demo:"https://ember-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/ember.svg",tagline:"Ember.js helps webapp developers be more productive out of the box.",description:"An Ember app, created with the Ember CLI.",website:"https://emberjs.com/",detectors:{some:[{matchPackage:"ember-source"},{matchPackage:"ember-cli"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `ember build`",value:"ember build"},devCommand:{value:"ember serve --port $PORT",placeholder:"ember serve"},outputDirectory:{value:"dist"}},dependency:"ember-cli",getOutputDirName:async()=>"dist",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/index.html"}]},{name:"Vue.js",slug:"vue",demo:"https://vue-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/vue.svg",tagline:"Vue.js is a versatile JavaScript framework that is as approachable as it is performant.",description:"A Vue.js app, created with the Vue CLI.",website:"https://vuejs.org",envPrefix:"VUE_APP_",detectors:{every:[{matchPackage:"@vue/cli-service"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `vue-cli-service build`",value:"vue-cli-service build"},devCommand:{value:"vue-cli-service serve --port $PORT",placeholder:"vue-cli-service serve"},outputDirectory:{value:"dist"}},dependency:"@vue/cli-service",getOutputDirName:async()=>"dist",defaultRoutes:[{src:"^/[^/]*\\.(js|txt|ico|json)",headers:{"cache-control":"max-age=300"},continue:!0},{src:"^/(img|js|css|fonts|media)/[^/]+\\.[0-9a-f]{8}\\.*",headers:{"cache-control":"max-age=31536000, immutable"},continue:!0},{handle:"filesystem"},{src:"^.*",dest:"/index.html"}]},{name:"Scully",slug:"scully",demo:"https://scully-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/scullyio-logo.svg",tagline:"Scully is a static site generator for Angular.",description:"The Static Site Generator for Angular apps.",website:"https://github.com/scullyio/scully",detectors:{every:[{matchPackage:"@scullyio/init"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `ng build && scully`",value:"ng build && scully"},devCommand:{value:"ng serve --port $PORT",placeholder:"ng serve"},outputDirectory:{value:"dist"}},dependency:"@scullyio/init",getOutputDirName:async()=>"dist/static"},{name:"Ionic Angular",slug:"ionic-angular",demo:"https://ionic-angular-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/ionic.svg",tagline:"Ionic Angular allows you to build mobile PWAs with Angular and the Ionic Framework.",description:"An Ionic Angular site, created with the Ionic CLI.",website:"https://ionicframework.com",detectors:{every:[{matchPackage:"@ionic/angular"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `ng build`",value:"ng build"},devCommand:{value:"ng serve --port $PORT"},outputDirectory:{value:"www"}},dependency:"@ionic/angular",getOutputDirName:async()=>"www",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/index.html"}]},{name:"Angular",slug:"angular",demo:"https://angular-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/angular.svg",tagline:"Angular is a TypeScript-based cross-platform framework from Google.",description:"An Angular app, created with the Angular CLI.",website:"https://angular.io",detectors:{every:[{matchPackage:"@angular/cli"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `ng build`",value:"ng build"},devCommand:{value:"ng serve --port $PORT",placeholder:"ng serve"},outputDirectory:{value:"dist"}},dependency:"@angular/cli",getOutputDirName:async dirPrefix=>{let base="dist";try{let location=(0,import_path.join)(dirPrefix,base),content=await readdir(location,{withFileTypes:!0});if(content.length===1&&content[0].isDirectory()){let potentialOutDir=(0,import_path.join)(base,content[0].name),potentialOutDirWithBrowser=(0,import_path.join)(potentialOutDir,"browser");return(0,import_fs.existsSync)(potentialOutDirWithBrowser)?potentialOutDirWithBrowser:potentialOutDir}}catch(error){console.error("Error detecting output directory: ",error)}return base},defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/index.html"}]},{name:"Polymer",slug:"polymer",demo:"https://polymer-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/polymer.svg",tagline:"Polymer is an open-source webapps library from Google, for building using Web Components.",description:"A Polymer app, created with the Polymer CLI.",website:"https://www.polymer-project.org/",detectors:{every:[{matchPackage:"polymer-cli"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `polymer build`",value:"polymer build"},devCommand:{value:"polymer serve --port $PORT",placeholder:"polymer serve"},outputDirectory:{value:"build"}},dependency:"polymer-cli",getOutputDirName:async dirPrefix=>{let base="build";try{let location=(0,import_path.join)(dirPrefix,base),paths=(await readdir(location)).filter(item=>!item.includes("."));return(0,import_path.join)(base,paths[0])}catch(error){console.error("Error detecting output directory: ",error)}return base},defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/index.html"}]},{name:"Svelte",slug:"svelte",demo:"https://svelte.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/svelte.svg",tagline:"Svelte lets you write high performance reactive apps with significantly less boilerplate.",description:"A basic Svelte app using the default template.",website:"https://svelte.dev",sort:3,detectors:{every:[{matchPackage:"svelte"},{matchPackage:"sirv-cli"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `rollup -c`",value:"rollup -c"},devCommand:{value:"rollup -c -w"},outputDirectory:{value:"public"}},dependency:"sirv-cli",getOutputDirName:async()=>"public",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/index.html"}]},{name:"SvelteKit (v0)",slug:"sveltekit",demo:"https://sveltekit-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/svelte.svg",screenshot:"https://py8fhxnkzwtsqdo9.public.blob.vercel-storage.com/front/import/sveltekit.png",tagline:"SvelteKit is a framework for building web applications of all sizes.",description:"A SvelteKit legacy app optimized Edge-first.",website:"https://kit.svelte.dev",supersedes:["vite"],sort:99,envPrefix:"VITE_",detectors:{every:[{path:"package.json",matchContent:'"(dev)?(d|D)ependencies":\\s*{[^}]*"@sveltejs\\/kit":\\s*"1\\.0\\.0-next\\.(\\d+)"[^}]*}'}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `svelte-kit build`",value:"svelte-kit build"},devCommand:{value:"svelte-kit dev --port $PORT",placeholder:"svelte-kit dev"},outputDirectory:{value:"public"}},getOutputDirName:async()=>"public"},{name:"SvelteKit",slug:"sveltekit-1",demo:"https://sveltekit-1-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/svelte.svg",screenshot:"https://py8fhxnkzwtsqdo9.public.blob.vercel-storage.com/front/import/sveltekit.png",tagline:"SvelteKit is a framework for building web applications of all sizes.",description:"A SvelteKit app optimized Edge-first.",website:"https://kit.svelte.dev",supersedes:["vite"],detectors:{every:[{path:"package.json",matchContent:'"(dev)?(d|D)ependencies":\\s*{[^}]*"@sveltejs\\/kit":\\s*".+?"[^}]*}'}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"vite build",value:"vite build"},devCommand:{placeholder:"vite dev",value:"vite dev --port $PORT"},outputDirectory:{value:"public"}},getOutputDirName:async()=>"public"},{name:"Ionic React",slug:"ionic-react",demo:"https://ionic-react-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/ionic.svg",tagline:"Ionic React allows you to build mobile PWAs with React and the Ionic Framework.",description:"An Ionic React site, created with the Ionic CLI.",website:"https://ionicframework.com",detectors:{every:[{matchPackage:"@ionic/react"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `react-scripts build`",value:"react-scripts build"},devCommand:{value:"react-scripts start"},outputDirectory:{value:"build"}},dependency:"@ionic/react",getOutputDirName:async()=>"build",defaultRoutes:[{src:"/static/(.*)",headers:{"cache-control":"s-maxage=31536000, immutable"},continue:!0},{src:"/service-worker.js",headers:{"cache-control":"s-maxage=0"},continue:!0},{src:"/sockjs-node/(.*)",dest:"/sockjs-node/$1"},{handle:"filesystem"},{src:"/static/(.*)",status:404,dest:"/404.html"},{src:"/(.*)",headers:{"cache-control":"s-maxage=0"},dest:"/index.html"}]},{name:"Create React App",slug:"create-react-app",demo:"https://create-react-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/react.svg",tagline:"Create React App allows you to get going with React in no time.",description:"A client-side React app created with create-react-app.",website:"https://create-react-app.dev",sort:4,envPrefix:"REACT_APP_",detectors:{some:[{matchPackage:"react-scripts"},{matchPackage:"react-dev-utils"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `react-scripts build`",value:"react-scripts build"},devCommand:{value:"react-scripts start"},outputDirectory:{value:"build"}},dependency:"react-scripts",getOutputDirName:async()=>"build",defaultRoutes:[{src:"/static/(.*)",headers:{"cache-control":"s-maxage=31536000, immutable"},continue:!0},{src:"/service-worker.js",headers:{"cache-control":"s-maxage=0"},continue:!0},{src:"/sockjs-node/(.*)",dest:"/sockjs-node/$1"},{handle:"filesystem"},{src:"/static/(.*)",status:404,dest:"/404.html"},{src:"/(.*)",headers:{"cache-control":"s-maxage=0"},dest:"/index.html"}]},{name:"Gridsome",slug:"gridsome",demo:"https://gridsome-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/gridsome.svg",tagline:"Gridsome is a Vue.js-powered framework for building websites & apps that are fast by default.",description:"A Gridsome app, created with the Gridsome CLI.",website:"https://gridsome.org/",detectors:{every:[{matchPackage:"gridsome"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `gridsome build`",value:"gridsome build"},devCommand:{value:"gridsome develop -p $PORT",placeholder:"gridsome develop"},outputDirectory:{value:"dist"}},dependency:"gridsome",getOutputDirName:async()=>"dist"},{name:"UmiJS",slug:"umijs",demo:"https://umijs-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/umi.svg",tagline:"UmiJS is an extensible enterprise-level React application framework.",description:"An UmiJS app, created using the Umi CLI.",website:"https://umijs.org",detectors:{every:[{matchPackage:"umi"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `umi build`",value:"umi build"},devCommand:{value:"umi dev --port $PORT",placeholder:"umi dev"},outputDirectory:{value:"dist"}},dependency:"umi",getOutputDirName:async()=>"dist",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/index.html"}]},{name:"Sapper",slug:"sapper",demo:"https://sapper-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/svelte.svg",tagline:"Sapper is a framework for building high-performance universal web apps with Svelte.",description:"A Sapper app, using the Sapper template.",website:"https://sapper.svelte.dev",detectors:{every:[{matchPackage:"sapper"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `sapper export`",value:"sapper export"},devCommand:{value:"sapper dev --port $PORT",placeholder:"sapper dev"},outputDirectory:{value:"__sapper__/export"}},dependency:"sapper",getOutputDirName:async()=>"__sapper__/export"},{name:"Saber",slug:"saber",logo:"https://api-frameworks.vercel.sh/framework-logos/saber.svg",tagline:"Saber is a framework for building static sites in Vue.js that supports data from any source.",description:"A Saber site, created with npm init.",website:"https://saber.egoist.dev",detectors:{every:[{matchPackage:"saber"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `saber build`",value:"saber build"},devCommand:{value:"saber --port $PORT",placeholder:"saber"},outputDirectory:{value:"public"}},dependency:"saber",getOutputDirName:async()=>"public",defaultRoutes:[{src:"/_saber/.*",headers:{"cache-control":"max-age=31536000, immutable"}},{handle:"filesystem"},{src:".*",status:404,dest:"404.html"}]},{name:"Stencil",slug:"stencil",demo:"https://stencil.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/stencil.svg",tagline:"Stencil is a powerful toolchain for building Progressive Web Apps and Design Systems.",description:"A Stencil site, created with the Stencil CLI.",website:"https://stenciljs.com/",detectors:{every:[{matchPackage:"@stencil/core"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `stencil build`",value:"stencil build"},devCommand:{value:"stencil build --dev --watch --serve --port $PORT",placeholder:"stencil build --dev --watch --serve"},outputDirectory:{value:"www"}},dependency:"@stencil/core",getOutputDirName:async()=>"www",defaultRoutes:[{src:"/assets/(.*)",headers:{"cache-control":"max-age=2592000"},continue:!0},{src:"/build/p-.*",headers:{"cache-control":"max-age=31536000, immutable"},continue:!0},{src:"/sw.js",headers:{"cache-control":"no-cache"},continue:!0},{handle:"filesystem"},{src:"/(.*)",dest:"/index.html"}]},{name:"Nuxt",slug:"nuxtjs",demo:"https://nuxtjs-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/nuxt.svg",screenshot:"https://py8fhxnkzwtsqdo9.public.blob.vercel-storage.com/front/import/nuxtjs.png",tagline:"Nuxt is the open source framework that makes full-stack development with Vue.js intuitive.",description:"A Nuxt app, bootstrapped with create-nuxt-app.",website:"https://nuxt.com",sort:2,envPrefix:"NUXT_ENV_",supersedes:["nitro"],detectors:{some:[{matchPackage:"nuxt"},{matchPackage:"nuxt3"},{matchPackage:"nuxt-edge"},{matchPackage:"nuxt-nightly"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `nuxt build`",value:"nuxt build"},devCommand:{value:"nuxt dev"},outputDirectory:{value:"dist"}},dependency:"nuxt",getOutputDirName:async()=>"dist",cachePattern:".nuxt/**",defaultRoutes:[{src:"/sw.js",headers:{"cache-control":"no-cache"},continue:!0},{src:"/_nuxt/(.*)",headers:{"cache-control":"public,max-age=31536000,immutable"},continue:!0},{handle:"filesystem"},{src:"/(.*)",dest:"/200.html"}]},{name:"RedwoodJS",slug:"redwoodjs",demo:"https://redwood-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/redwoodjs.svg",tagline:"RedwoodJS is a full-stack framework for the Jamstack.",description:"A RedwoodJS app, bootstraped with create-redwood-app.",website:"https://redwoodjs.com",envPrefix:"REDWOOD_ENV_",useRuntime:{src:"package.json",use:"@vercel/redwood"},ignoreRuntimes:["@vercel/node"],detectors:{every:[{matchPackage:"@redwoodjs/core"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{value:"yarn rw deploy vercel"},devCommand:{value:'yarn rw dev --fwd="--port=$PORT --open=false"',placeholder:"yarn rw dev"},outputDirectory:{placeholder:"RedwoodJS default"}},getOutputDirName:async()=>"public"},{name:"Hugo",slug:"hugo",demo:"https://hugo-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/hugo.svg",tagline:"Hugo is the world\u2019s fastest framework for building websites, written in Go.",description:"A Hugo site, created with the Hugo CLI.",website:"https://gohugo.io",detectors:{some:[{path:"config.yaml",matchContent:"baseURL"},{path:"config.toml",matchContent:"baseURL"},{path:"config.json",matchContent:"baseURL"}]},settings:{installCommand:{placeholder:"None"},buildCommand:{placeholder:"`npm run build` or `hugo --gc`",value:"hugo --gc"},devCommand:{value:"hugo server -D -w -p $PORT",placeholder:"hugo server -D"},outputDirectory:{placeholder:"`public` or `publishDir` from the `config` file"}},getOutputDirName:async dirPrefix=>{let config=await(0,import_read_config_file.readConfigFile)(["config.json","config.yaml","config.toml"].map(fileName=>(0,import_path.join)(dirPrefix,fileName)));return config&&config.publishDir||"public"},defaultVersion:"0.58.2"},{name:"Jekyll",slug:"jekyll",demo:"https://jekyll-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/jekyll.svg",tagline:"Jekyll makes it super easy to transform your plain text into static websites and blogs.",description:"A Jekyll site, created with the Jekyll CLI.",website:"https://jekyllrb.com/",detectors:{every:[{path:"_config.yml"}]},settings:{installCommand:{value:"bundle install"},buildCommand:{placeholder:"`npm run build` or `jekyll build`",value:"jekyll build"},devCommand:{value:"bundle exec jekyll serve --watch --port $PORT",placeholder:"bundle exec jekyll serve"},outputDirectory:{placeholder:"`_site` or `destination` from `_config.yml`"}},getOutputDirName:async dirPrefix=>{let config=await(0,import_read_config_file.readConfigFile)((0,import_path.join)(dirPrefix,"_config.yml"));return config&&config.destination||"_site"},cachePattern:"{vendor/bin,vendor/cache,vendor/bundle}/**"},{name:"Brunch",slug:"brunch",demo:"https://brunch-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/brunch.svg",tagline:"Brunch is a fast and simple webapp build tool with seamless incremental compilation for rapid development.",description:"A Brunch app, created with the Brunch CLI.",website:"https://brunch.io/",detectors:{some:[{matchPackage:"brunch"},{path:"brunch-config.js"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `brunch build --production`",value:"brunch build --production"},devCommand:{value:"brunch watch --server --port $PORT",placeholder:"brunch watch --server"},outputDirectory:{value:"public"}},getOutputDirName:async()=>"public"},{name:"Middleman",slug:"middleman",demo:"https://middleman-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/middleman.svg",tagline:"Middleman is a static site generator that uses all the shortcuts and tools in modern web development.",description:"A Middleman app, created with the Middleman CLI.",website:"https://middlemanapp.com/",detectors:{every:[{path:"config.rb"}]},settings:{installCommand:{value:"bundle install"},buildCommand:{placeholder:"`npm run build` or `bundle exec middleman build`",value:"bundle exec middleman build"},devCommand:{placeholder:"bundle exec middleman server",value:"bundle exec middleman server -p $PORT"},outputDirectory:{value:"build"}},getOutputDirName:async()=>"build",cachePattern:"{vendor/bin,vendor/cache,vendor/bundle}/**"},{name:"Zola",slug:"zola",demo:"https://zola-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/zola.svg",tagline:"Everything you need to make a static site engine in one binary.",description:'A Zola app, created with the "Getting Started" tutorial.',website:"https://www.getzola.org",detectors:{every:[{path:"config.toml",matchContent:"base_url"}]},settings:{installCommand:{placeholder:"None"},buildCommand:{value:"zola build"},devCommand:{placeholder:"zola serve",value:"zola serve --port $PORT"},outputDirectory:{value:"public"}},getOutputDirName:async()=>"public",defaultVersion:"0.13.0"},{name:"Hydrogen (v1)",slug:"hydrogen",demo:"https://hydrogen-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/hydrogen.svg",tagline:"React framework for headless commerce",description:"React framework for headless commerce",website:"https://hydrogen.shopify.dev",supersedes:["vite"],useRuntime:{src:"package.json",use:"@vercel/hydrogen"},envPrefix:"PUBLIC_",detectors:{some:[{matchPackage:"@shopify/hydrogen"},{path:"hydrogen.config.js"},{path:"hydrogen.config.ts"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{value:"shopify hydrogen build",placeholder:"`npm run build` or `shopify hydrogen build`"},devCommand:{value:"shopify hydrogen dev",placeholder:"shopify hydrogen dev"},outputDirectory:{value:"dist"}},dependency:"@shopify/hydrogen",getOutputDirName:async()=>"dist"},{name:"Vite",slug:"vite",demo:"https://vite-vue-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/vite.svg",tagline:"Vite is a new breed of frontend build tool that significantly improves the frontend development experience.",description:"A Vue.js app, created with Vite.",website:"https://vitejs.dev",supersedes:["ionic-react"],envPrefix:"VITE_",detectors:{every:[{matchPackage:"vite"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `vite build`",value:"vite build"},devCommand:{placeholder:"vite",value:"vite --port $PORT"},outputDirectory:{value:"dist"}},dependency:"vite",getOutputDirName:async()=>"dist"},{name:"TanStack Start",slug:"tanstack-start",logo:"https://api-frameworks.vercel.sh/framework-logos/tanstack-start.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/tanstack-start-dark.svg",tagline:"Full-stack Framework powered by TanStack Router for React and Solid.",description:"Full-document SSR, Streaming, Server Functions, bundling and more, powered by TanStack Router and Vite - Ready to deploy to your favorite hosting provider.",website:"https://tanstack.com/start",supersedes:["ionic-react","vite"],detectors:{every:[{matchPackage:"@tanstack/router-plugin"}],some:[{matchPackage:"@tanstack/react-start"},{matchPackage:"@tanstack/solid-start"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `vite build`",value:"vite build"},devCommand:{placeholder:"vite",value:"vite --port $PORT"},outputDirectory:{value:"dist"}},getOutputDirName:async()=>"dist"},{name:"TanStack Start",slug:"tanstack-start-lovable",logo:"https://api-frameworks.vercel.sh/framework-logos/tanstack-start.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/tanstack-start-dark.svg",platform:{name:"lovable",logo:"https://api-frameworks.vercel.sh/framework-logos/lovable.svg"},tagline:"Full-stack Framework powered by TanStack Router imported from Lovable",description:"Full-document SSR, Streaming, Server Functions, bundling and more, imported from Lovable",website:"https://lovable.dev/",supersedes:["tanstack-start","ionic-react","vite"],detectors:{every:[{matchPackage:"@lovable.dev/vite-tanstack-config"}],some:[{matchPackage:"@tanstack/react-start"},{matchPackage:"@tanstack/solid-start"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `vite build`",value:"vite build"},devCommand:{placeholder:"vite",value:"vite --port $PORT"},outputDirectory:{value:"dist"}},getOutputDirName:async()=>"dist"},{name:"VitePress",slug:"vitepress",demo:"https://vitepress-starter-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/vite.svg",tagline:"VitePress is VuePress' little brother, built on top of Vite.",description:"VuePress on top of Vite",website:"https://vitepress.vuejs.org/",detectors:{every:[{matchPackage:"vitepress"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `vitepress build docs`",value:"vitepress build docs"},devCommand:{value:"vitepress dev docs --port $PORT"},outputDirectory:{value:"docs/.vitepress/dist"}},getOutputDirName:async()=>"docs/.vitepress/dist"},{name:"VuePress",slug:"vuepress",demo:"https://vuepress-starter-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/vuepress.svg",tagline:"Vue-powered Static Site Generator",description:"Vue-powered Static Site Generator",website:"https://vuepress.vuejs.org/",detectors:{every:[{matchPackage:"vuepress"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `vuepress build src`",value:"vuepress build src"},devCommand:{value:"vuepress dev src --port $PORT"},outputDirectory:{value:"src/.vuepress/dist"}},getOutputDirName:async()=>"src/.vuepress/dist"},{name:"Parcel",slug:"parcel",demo:"https://parcel-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/parcel.svg",tagline:"Parcel is a zero configuration build tool for the web that scales to projects of any size and complexity.",description:"A vanilla web app built with Parcel.",website:"https://parceljs.org",detectors:{every:[{matchPackage:"parcel"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `parcel build`",value:"parcel build"},devCommand:{placeholder:"parcel",value:"parcel"},outputDirectory:{value:"dist"}},dependency:"parcel",getOutputDirName:async()=>"dist",defaultRoutes:[{src:"^/[^./]+\\.[0-9a-f]{8}\\.(css|js|png|jpg|webp|avif|svg)$",headers:{"cache-control":"s-maxage=31536000, immutable"},continue:!0},{handle:"filesystem"}]},{name:"FastAPI",slug:"fastapi",demo:"https://vercel-fastapi-gamma-smoky.vercel.app/",logo:"https://api-frameworks.vercel.sh/framework-logos/fastapi.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/fastapi.svg",tagline:"FastAPI framework, high performance, easy to learn, fast to code, ready for production",description:"FastAPI framework, high performance, easy to learn, fast to code, ready for production",website:"https://fastapi.tiangolo.com",supersedes:["python"],useRuntime:{src:"<detect>",use:"@vercel/python"},ignoreRuntimes:["@vercel/python"],detectors:{some:[{path:"requirements.txt",matchContent:"fastapi"},{path:"pyproject.toml",matchContent:"fastapi"},{path:"Pipfile",matchContent:"fastapi"}]},settings:{installCommand:{placeholder:"`pip install -r requirements.txt`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}]},{name:"Flask",slug:"flask",logo:"https://api-frameworks.vercel.sh/framework-logos/flask.svg",tagline:"The Python micro web framework",description:"A Flask app, ready for production",website:"https://flask.palletsprojects.com",supersedes:["python"],useRuntime:{src:"<detect>",use:"@vercel/python"},ignoreRuntimes:["@vercel/python"],detectors:{some:[{path:"requirements.txt",matchContent:"[Ff]lask"},{path:"pyproject.toml",matchContent:"[Ff]lask"},{path:"Pipfile",matchContent:"[Ff]lask"}]},settings:{installCommand:{placeholder:"`pip install -r requirements.txt`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}]},{name:"FastHTML",slug:"fasthtml",demo:"https://fasthtml-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/fasthtml.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/fasthtml-dark.svg",tagline:"The fastest way to create an HTML app",description:"A library for writing fast and scalable Starlette-powered web applications",website:"https://fastht.ml",supersedes:["python"],useRuntime:{src:"main.py",use:"@vercel/python"},detectors:{every:[{path:"requirements.txt",matchContent:"python-fasthtml"}]},settings:{installCommand:{placeholder:"`pip install`"},buildCommand:{placeholder:"None",value:null},devCommand:{value:"uvicorn main:app --reload"},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/main"}]},{name:"Django",slug:"django",logo:"https://api-frameworks.vercel.sh/framework-logos/django.svg",tagline:"Django is a high-level Python web framework that encourages rapid development and clean, pragmatic design. ",description:"A Django project served via the Python Runtime.",website:"https://www.djangoproject.com",supersedes:["python"],useRuntime:{src:"<detect>",use:"@vercel/python"},ignoreRuntimes:["@vercel/python"],detectors:{some:[{path:"requirements.txt",matchContent:"[Dd]jango"},{path:"pyproject.toml",matchContent:"[Dd]jango"},{path:"Pipfile",matchContent:"[Dd]jango"},{path:"manage.py",matchContent:"DJANGO_SETTINGS_MODULE"}]},settings:{installCommand:{placeholder:"`pip install -r requirements.txt`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}]},{name:"Ash",slug:"ash",logo:"https://api-frameworks.vercel.sh/framework-logos/ash.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/ash-dark.svg",tagline:"A filesystem-first framework for durable backend agents on Vercel.",description:"An Ash app: agents authored as a directory of files, compiled and served on Vercel.",detectors:{every:[{path:"package.json",matchContent:'"(dev)?(d|D)ependencies":\\s*{[^}]*"experimental-ash":\\s*".+?"[^}]*}'}]},settings:{installCommand:{placeholder:"`pnpm install`, `yarn install`, or `npm install`"},buildCommand:{value:"ash build",placeholder:"`npm run build` or `ash build`"},devCommand:{value:"ash dev",placeholder:"ash dev"},outputDirectory:{value:".output"}},getOutputDirName:async()=>".output",experimental:!0},{name:"Factory (Eve)",slug:"factory-eve",logo:"https://api-frameworks.vercel.sh/framework-logos/eve.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/eve-dark.svg",tagline:"A software factory built with Eve.",description:"A Factory app built with the Eve agent framework.",supersedes:["eve"],detectors:{every:[{matchPackage:"eve"},{matchPackage:"@vercel/factory"}]},settings:{installCommand:{placeholder:"`pnpm install`, `yarn install`, or `npm install`"},buildCommand:{value:"eve build",placeholder:"`npm run build` or `eve build`"},devCommand:{value:"eve dev",placeholder:"eve dev"},outputDirectory:{value:".output"}},getOutputDirName:async()=>".output"},{name:"eve",slug:"eve",logo:"https://api-frameworks.vercel.sh/framework-logos/eve.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/eve-dark.svg",tagline:"A filesystem-first framework for durable backend agents on Vercel.",description:"An eve app: agents authored as a directory of files, compiled and served on Vercel.",detectors:{every:[{path:"package.json",matchContent:'"(dev)?(d|D)ependencies":\\s*{[^}]*"eve":\\s*".+?"[^}]*}'}]},settings:{installCommand:{placeholder:"`pnpm install`, `yarn install`, or `npm install`"},buildCommand:{value:"eve build",placeholder:"`npm run build` or `eve build`"},devCommand:{value:"eve dev",placeholder:"eve dev"},outputDirectory:{value:".output"}},getOutputDirName:async()=>".output"},{name:"Sanity",slug:"sanity",demo:"https://template-studio-clean.sanity.dev",logo:"https://api-frameworks.vercel.sh/framework-logos/sanity.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/sanity-dark.svg",tagline:"The back-end built for AI content operations. Power web, mobile, and agentic applications at scale.",description:"A Sanity Studio",website:"https://www.sanity.io",envPrefix:"SANITY_STUDIO_",detectors:{some:[{path:"sanity.config.js"},{path:"sanity.config.jsx"},{path:"sanity.config.ts"},{path:"sanity.config.tsx"}],every:[{matchPackage:"sanity"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `sanity build`",value:"sanity build"},devCommand:{value:"sanity dev --port $PORT"},outputDirectory:{value:"dist"}},dependency:"sanity",getOutputDirName:async()=>"dist",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/index.html"}]},{name:"Sanity (v2 - legacy)",slug:"sanity-v2",demo:"https://sanity-studio-template.vercel.app",logo:"https://api-frameworks.vercel.sh/framework-logos/sanity-v2.svg",tagline:"The structured content platform.",description:"A Sanity Studio",website:"https://www.sanity.io",envPrefix:"SANITY_STUDIO_",detectors:{some:[{path:"sanity.json"}],every:[{path:"package.json",matchContent:'"(dev)?(d|D)ependencies":\\s*{[^}]*"@sanity/cli":\\s*"\\^?2\\..*"[^}]*}'}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `sanity build`",value:"sanity build"},devCommand:{value:"sanity start --port $PORT"},outputDirectory:{value:"dist"}},dependency:"@sanity/cli",getOutputDirName:async()=>"dist",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/index.html"}]},{name:"Storybook",slug:"storybook",logo:"https://api-frameworks.vercel.sh/framework-logos/storybook.svg",tagline:"Frontend workshop for UI development",description:"Storybook is a frontend workshop for building UI components and pages in isolation.",website:"https://storybook.js.org",ignoreRuntimes:["@vercel/next","@vercel/node"],disableRootMiddleware:!0,detectionConfidence:"weak",detectors:{every:[{matchPackage:"storybook"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{value:"storybook build",ignorePackageJsonScript:!0},devCommand:{value:"storybook dev -p $PORT"},outputDirectory:{value:"storybook-static"}},getOutputDirName:async()=>"storybook-static"},{name:"Nitro",slug:"nitro",logo:"https://api-frameworks.vercel.sh/framework-logos/nitro.svg",demo:"https://nitro-template.vercel.app",tagline:"Nitro is a next generation server toolkit.",description:"Nitro lets you create web servers that run on multiple platforms.",website:"https://nitro.build/",detectors:{some:[{matchPackage:"nitropack"},{matchPackage:"nitro"}]},supersedes:["vite"],settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `nitro build`",value:"nitro build"},devCommand:{value:"nitro dev"},outputDirectory:{value:"dist"}},getOutputDirName:async()=>"public"},{name:"Hono",slug:"hono",logo:"https://api-frameworks.vercel.sh/framework-logos/hono.svg",demo:"https://hono.vercel.dev",tagline:"Web framework built on Web Standards",description:"Fast, lightweight, built on Web Standards. Support for any JavaScript runtime.",website:"https://hono.dev",supersedes:["node"],useRuntime:{src:"index.js",use:"@vercel/hono"},defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}],detectors:{every:[{matchPackage:"hono"}],some:[{path:"app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`},{path:"src/server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']hono["']\\s*(?:\\))?`}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},dependency:"hono",getOutputDirName:async()=>"public"},{name:"Express",slug:"express",logo:"https://api-frameworks.vercel.sh/framework-logos/express.svg",demo:"https://express-vercel-example-demo.vercel.app/",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/express-dark.svg",tagline:"Fast, unopinionated, minimalist web framework for Node.js",description:"Fast, unopinionated, minimalist web framework for Node.js",website:"https://expressjs.com",supersedes:["node"],useRuntime:{src:"index.js",use:"@vercel/express"},defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}],detectors:{every:[{matchPackage:"express"}],some:[{path:"app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`},{path:"src/server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']express["']\\s*(?:\\))?`}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},dependency:"express",getOutputDirName:async()=>"public"},{name:"H3",slug:"h3",logo:"https://api-frameworks.vercel.sh/framework-logos/h3.svg",tagline:"Universal, Tiny, and Fast Servers",description:"H(TTP) server framework built on top of web standards for high performance and composability.",website:"https://h3.dev/",supersedes:["node"],useRuntime:{src:"index.js",use:"@vercel/h3"},defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}],detectors:{every:[{matchPackage:"h3"}],some:[{path:"app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`},{path:"src/server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']h3["']\\s*(?:\\))?`}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},dependency:"h3",getOutputDirName:async()=>"public"},{name:"Koa",slug:"koa",logo:"https://api-frameworks.vercel.sh/framework-logos/koa.svg",tagline:"Expressive middleware for Node.js using ES2017 async functions",description:"Koa is a new web framework designed by the team behind Express, which aims to be a smaller, more expressive, and more robust foundation for web applications and APIs.",website:"https://koajs.com",supersedes:["node"],useRuntime:{src:"index.js",use:"@vercel/koa"},defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}],detectors:{every:[{matchPackage:"koa"}],some:[{path:"app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`},{path:"src/server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']koa["']\\s*(?:\\))?`}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},dependency:"koa",getOutputDirName:async()=>"public"},{name:"NestJS",slug:"nestjs",logo:"https://api-frameworks.vercel.sh/framework-logos/nestjs.svg",tagline:"Framework for building efficient, scalable Node.js server-side applications",description:"A progressive Node.js framework for building efficient, reliable and scalable server-side applications.",website:"https://nestjs.com/",supersedes:["node"],useRuntime:{src:"index.js",use:"@vercel/nestjs"},defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}],detectors:{every:[{matchPackage:"@nestjs/core"}],some:[{path:"src/main.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/main.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/main.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/main.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/main.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/main.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"main.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"main.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"main.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"main.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"main.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"main.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`},{path:"src/server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']@nestjs/core["']\\s*(?:\\))?`}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},dependency:"nestjs",getOutputDirName:async()=>"public"},{name:"Elysia",slug:"elysia",logo:"https://api-frameworks.vercel.sh/framework-logos/elysia.svg",tagline:"Ergonomic framework for humans",description:"TypeScript with End-to-End Type Safety, type integrity, and exceptional developer experience. Supercharged by Bun.",website:"https://elysiajs.com/",supersedes:["node"],useRuntime:{src:"index.js",use:"@vercel/elysia"},defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}],detectors:{every:[{matchPackage:"elysia"}],some:[{path:"app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`},{path:"src/server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']elysia["']\\s*(?:\\))?`}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public"},{name:"Fastify",slug:"fastify",logo:"https://api-frameworks.vercel.sh/framework-logos/fastify.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/fastify-dark.svg",tagline:"Fast and low overhead web framework, for Node.js",description:"Fastify is a web framework highly focused on providing the best developer experience with the least overhead and a powerful plugin architecture.",website:"https://fastify.dev/",supersedes:["node"],useRuntime:{src:"index.js",use:"@vercel/fastify"},defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}],detectors:{every:[{matchPackage:"fastify"}],some:[{path:"app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/index.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/index.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/index.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/index.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/index.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/index.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/app.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/app.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/app.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/app.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/app.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/app.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/server.cjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/server.js",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/server.mjs",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/server.mts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/server.ts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`},{path:"src/server.cts",matchContent:`(?:from|require|import)\\s*(?:\\(\\s*)?["']fastify["']\\s*(?:\\))?`}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public"},{name:"xmcp",slug:"xmcp",logo:"https://api-frameworks.vercel.sh/framework-logos/xmcp.svg",demo:"https://xmcp-template.vercel.app/",tagline:"The MCP framework for building AI-powered tools",description:"A framework for building Model Context Protocol servers with zero configuration.",website:"https://xmcp.dev",detectors:{some:[{path:"xmcp.config.ts"},{path:"xmcp.config.js"},{matchPackage:"xmcp"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `xmcp build`",value:"xmcp build --vercel"},devCommand:{value:"xmcp dev",placeholder:"xmcp dev"},outputDirectory:{value:"dist"}},dependency:"xmcp",getOutputDirName:async()=>"dist"},{name:"Python",slug:"python",runtimeFramework:!0,logo:"https://api-frameworks.vercel.sh/framework-logos/python.svg",tagline:"Python is a programming language that lets you work quickly and integrate systems more effectively.",description:"A generic Python application deployed as a serverless function.",website:"https://python.org",useRuntime:{src:"<detect>",use:"@vercel/python"},ignoreRuntimes:["@vercel/python"],detectors:{some:[{path:"requirements.txt"},{path:"pyproject.toml"},{path:"Pipfile"}]},settings:{installCommand:{placeholder:"`pip install -r requirements.txt`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}]},{name:"Ruby",slug:"ruby",experimental:!0,runtimeFramework:!0,logo:"https://api-frameworks.vercel.sh/framework-logos/ruby.svg",tagline:"A dynamic, open source programming language with a focus on simplicity and productivity.",description:"A generic Ruby application deployed as a serverless function.",website:"https://www.ruby-lang.org",useRuntime:{src:"config.ru",use:"@vercel/ruby"},ignoreRuntimes:["@vercel/ruby"],detectors:{every:[{path:"config.ru"},{path:"Gemfile"}]},settings:{installCommand:{placeholder:"`bundle install`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/config"}]},{name:"Rust",slug:"rust",runtimeFramework:!0,logo:"https://api-frameworks.vercel.sh/framework-logos/rust.svg",tagline:"A language empowering everyone to build reliable and efficient software.",description:"A generic Rust application deployed as a serverless function.",website:"https://www.rust-lang.org",useRuntime:{src:"src/main.rs",use:"@vercel/rust"},ignoreRuntimes:["@vercel/rust"],detectors:{every:[{path:"Cargo.toml"},{path:"src/main.rs"}]},settings:{installCommand:{placeholder:"None"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"`cargo run`",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public"},{name:"Axum",slug:"axum",experimental:!0,supersedes:["rust"],logo:"https://api-frameworks.vercel.sh/framework-logos/axum.svg",tagline:"Ergonomic and modular web framework built with Tokio, Tower, and Hyper.",description:"An Axum application deployed as a serverless function.",website:"https://github.com/tokio-rs/axum",useRuntime:{src:"src/main.rs",use:"@vercel/rust"},ignoreRuntimes:["@vercel/rust"],detectors:{every:[{path:"Cargo.toml",matchContent:"axum\\s*="},{path:"src/main.rs"}]},settings:{installCommand:{placeholder:"None"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"`cargo run`",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public"},{name:"Actix Web",slug:"actix-web",experimental:!0,runtimeFramework:!0,supersedes:["rust"],logo:"https://api-frameworks.vercel.sh/framework-logos/actix-web.svg",tagline:"A powerful, pragmatic, and extremely fast web framework for Rust.",description:"An Actix Web application deployed as a serverless function.",website:"https://actix.rs",useRuntime:{src:"src/main.rs",use:"@vercel/rust"},ignoreRuntimes:["@vercel/rust"],detectors:{every:[{path:"Cargo.toml",matchContent:"actix-web\\s*="},{path:"src/main.rs"}]},settings:{installCommand:{placeholder:"None"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"`cargo run`",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public"},{name:"Bun",slug:"bun",runtimeFramework:!0,experimental:!0,supersedes:["node"],logo:"https://api-frameworks.vercel.sh/framework-logos/bun.svg",tagline:"Bun is a fast all-in-one JavaScript runtime, bundler, and package manager.",description:"A Bun application deployed as a serverless function.",website:"https://bun.com",useRuntime:{src:"package.json",use:"@vercel/backends"},ignoreRuntimes:["@vercel/node"],detectors:{every:[{path:"bun.lock"}],some:[{path:"server.cjs"},{path:"server.js"},{path:"server.mjs"},{path:"server.mts"},{path:"server.ts"},{path:"server.cts"},{path:"src/server.cjs"},{path:"src/server.js"},{path:"src/server.mjs"},{path:"src/server.mts"},{path:"src/server.ts"},{path:"src/server.cts"}]},settings:{installCommand:{value:"bun install",placeholder:"bun install"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"`bun dev`, `bun run dev`, or `bun --hot server.ts`",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}]},{name:"Node",slug:"node",runtimeFramework:!0,logo:"https://api-frameworks.vercel.sh/framework-logos/node.svg",tagline:"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine.",description:"A generic Node.js application deployed as a serverless function.",website:"https://nodejs.org",useRuntime:{src:"package.json",use:"@vercel/backends"},ignoreRuntimes:["@vercel/node"],detectors:{some:[{path:"server.cjs"},{path:"server.js"},{path:"server.mjs"},{path:"server.mts"},{path:"server.ts"},{path:"server.cts"},{path:"src/server.cjs"},{path:"src/server.js"},{path:"src/server.mjs"},{path:"src/server.mts"},{path:"src/server.ts"},{path:"src/server.cts"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"`npm run dev`, `node server.js`, or `npx ts-node server.ts`",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public",defaultRoutes:[{handle:"filesystem"},{src:"/(.*)",dest:"/"}]},{name:"Go",slug:"go",runtimeFramework:!0,logo:"https://api-frameworks.vercel.sh/framework-logos/go.svg",tagline:"An open-source programming language supported by Google.",description:"A generic Go application deployed as a serverless function.",website:"https://go.dev",useRuntime:{src:"index.go",use:"@vercel/go"},ignoreRuntimes:["@vercel/go"],detectors:{every:[{path:"go.mod"}],some:[{path:"main.go"},{path:"cmd/api/main.go"},{path:"cmd/server/main.go"}]},settings:{installCommand:{placeholder:"`go mod download`"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"`go run .` or `go run ./cmd/api`",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public"},{name:"Services",slug:"services",logo:"https://api-frameworks.vercel.sh/framework-logos/services.svg",tagline:"Multiple services deployed as serverless functions within your project.",description:"Multiple services deployed as serverless functions within your project.",website:"https://vercel.com",settings:{installCommand:{placeholder:"None"},buildCommand:{placeholder:"None",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{value:"N/A"}},getOutputDirName:async()=>"public"},{name:"Mastra",slug:"mastra",logo:"https://api-frameworks.vercel.sh/framework-logos/mastra.svg",darkModeLogo:"https://api-frameworks.vercel.sh/framework-logos/mastra-dark.svg",tagline:"Build AI agents with a modern TypeScript stack",description:"Mastra is a framework for building AI-powered apps and agents with workflows, memory, streaming, evals, tracing, and Studio, an interactive UI for dev and testing.",website:"https://mastra.ai",detectors:{every:[{matchPackage:"mastra"}]},settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run build` or `mastra build`",value:"mastra build"},devCommand:{value:"mastra dev"},outputDirectory:{value:".mastra"}},getOutputDirName:async()=>".mastra"},{name:"Other",slug:null,logo:"https://api-frameworks.vercel.sh/framework-logos/other.svg",description:"No framework or an unoptimized framework.",settings:{installCommand:{placeholder:"`yarn install`, `pnpm install`, `npm install`, or `bun install`"},buildCommand:{placeholder:"`npm run vercel-build` or `npm run build`",value:null},devCommand:{placeholder:"None",value:null},outputDirectory:{placeholder:"`public` if it exists, or `.`"}},getOutputDirName:async()=>"public"}],frameworkList=frameworks,frameworks_default=frameworkList}});export{require_dist2 as require_dist,require_frameworks};
|
|
68
68
|
/*! Bundled license information:
|
|
69
69
|
|
|
70
70
|
smol-toml/dist/index.cjs:
|