theokit 0.48.13 → 0.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/{actions-virtual-module-YQXRSSMW.js → actions-virtual-module-5WBVSDOM.js} +22 -12
- package/dist/actions-virtual-module-5WBVSDOM.js.map +1 -0
- package/dist/{actions-virtual-module-LB4NGONI.js → actions-virtual-module-ZYLMNW6K.js} +13 -8
- package/dist/{actions-virtual-module-LB4NGONI.js.map → actions-virtual-module-ZYLMNW6K.js.map} +1 -1
- package/dist/adapters/agent-mount.d.ts +127 -0
- package/dist/adapters/agent-mount.js +24 -0
- package/dist/adapters/security-headers.d.ts +132 -0
- package/dist/adapters/security-headers.js +64 -0
- package/dist/adapters/security-headers.js.map +1 -0
- package/dist/adapters/web-shim.d.ts +100 -13
- package/dist/adapters/web-shim.js +158 -54
- package/dist/adapters/web-shim.js.map +1 -1
- package/dist/agent-GKUEL6OH.js +15 -0
- package/dist/agent-scan-BZa-pagG.d.ts +16 -0
- package/dist/{app-typed-client-GHO3EWZK.js → app-typed-client-4LAIEGFX.js} +23 -13
- package/dist/app-typed-client-4LAIEGFX.js.map +1 -0
- package/dist/{app-typed-client-G3J5G7E5.js → app-typed-client-DQM3Y6YY.js} +14 -9
- package/dist/app-typed-client-DQM3Y6YY.js.map +1 -0
- package/dist/aws-lambda-VKMYUMP2.js +261 -0
- package/dist/aws-lambda-VKMYUMP2.js.map +1 -0
- package/dist/{build-WU6AKKIB.js → build-FLX6VF7Q.js} +71 -26
- package/dist/build-FLX6VF7Q.js.map +1 -0
- package/dist/{bun-33RD6K7O.js → bun-L7PP6ID5.js} +105 -13
- package/dist/bun-L7PP6ID5.js.map +1 -0
- package/dist/{check-45NKUVSQ.js → check-GIPZBFTX.js} +2 -2
- package/dist/{chunk-KD5G3YXI.js → chunk-2AMLGJJA.js} +35 -9
- package/dist/chunk-2AMLGJJA.js.map +1 -0
- package/dist/chunk-3PBAN2YE.js +146 -0
- package/dist/chunk-3PBAN2YE.js.map +1 -0
- package/dist/{chunk-HBU2GIMZ.js → chunk-3QPVEJ7D.js} +15 -9
- package/dist/chunk-3QPVEJ7D.js.map +1 -0
- package/dist/{chunk-47CINLWF.js → chunk-44J2ANQC.js} +2 -2
- package/dist/{chunk-IEES3CHD.js → chunk-47MM2JUK.js} +8 -2
- package/dist/chunk-47MM2JUK.js.map +1 -0
- package/dist/chunk-4X6H2BXP.js +108 -0
- package/dist/chunk-4X6H2BXP.js.map +1 -0
- package/dist/{chunk-A7JBF5FO.js → chunk-5K4TDLRG.js} +8 -5
- package/dist/chunk-5K4TDLRG.js.map +1 -0
- package/dist/chunk-5YPXXSYY.js +181 -0
- package/dist/chunk-5YPXXSYY.js.map +1 -0
- package/dist/{chunk-YGAXV5HR.js → chunk-6J4JWHDJ.js} +191 -112
- package/dist/chunk-6J4JWHDJ.js.map +1 -0
- package/dist/chunk-72DMJBXI.js +424 -0
- package/dist/chunk-72DMJBXI.js.map +1 -0
- package/dist/chunk-7PM6K5EV.js +513 -0
- package/dist/chunk-7PM6K5EV.js.map +1 -0
- package/dist/{chunk-MTEWLGVY.js → chunk-BPYMC7SU.js} +4 -48
- package/dist/chunk-BPYMC7SU.js.map +1 -0
- package/dist/chunk-BU6RJPPJ.js +421 -0
- package/dist/chunk-BU6RJPPJ.js.map +1 -0
- package/dist/{chunk-FB2HBNIC.js → chunk-BX6EUYHU.js} +6 -2
- package/dist/chunk-BX6EUYHU.js.map +1 -0
- package/dist/{chunk-BIVCP6X5.js → chunk-C62IZEJI.js} +465 -202
- package/dist/chunk-C62IZEJI.js.map +1 -0
- package/dist/chunk-D4VP2QPR.js +16 -0
- package/dist/chunk-D4VP2QPR.js.map +1 -0
- package/dist/{chunk-J5MXCGKA.js → chunk-DHAD2O3S.js} +6 -6
- package/dist/chunk-DHAD2O3S.js.map +1 -0
- package/dist/chunk-E43VJ3E5.js +188 -0
- package/dist/chunk-E43VJ3E5.js.map +1 -0
- package/dist/chunk-EVZKNA2W.js +110 -0
- package/dist/chunk-EVZKNA2W.js.map +1 -0
- package/dist/chunk-FD4ZDTQ6.js +181 -0
- package/dist/chunk-FD4ZDTQ6.js.map +1 -0
- package/dist/chunk-FDOOBTXJ.js +17 -0
- package/dist/chunk-FDOOBTXJ.js.map +1 -0
- package/dist/chunk-FH3SQR6P.js +275 -0
- package/dist/chunk-FH3SQR6P.js.map +1 -0
- package/dist/chunk-HJHGTFEJ.js +23 -0
- package/dist/chunk-HJHGTFEJ.js.map +1 -0
- package/dist/{chunk-LXAESF4Y.js → chunk-HK4AZBKX.js} +7 -4
- package/dist/chunk-HK4AZBKX.js.map +1 -0
- package/dist/{chunk-T5C46IIU.js → chunk-HWBRS4DZ.js} +28 -269
- package/dist/chunk-HWBRS4DZ.js.map +1 -0
- package/dist/chunk-IRQGAC4L.js +52 -0
- package/dist/chunk-IRQGAC4L.js.map +1 -0
- package/dist/{chunk-FNTLKHZ7.js → chunk-JDN5SAAD.js} +7 -4
- package/dist/chunk-JDN5SAAD.js.map +1 -0
- package/dist/{chunk-GXEX4CBH.js → chunk-JIKNR5LX.js} +673 -484
- package/dist/chunk-JIKNR5LX.js.map +1 -0
- package/dist/{chunk-GRI4XHBJ.js → chunk-JWRCZIA4.js} +266 -108
- package/dist/chunk-JWRCZIA4.js.map +1 -0
- package/dist/{chunk-E576KYYT.js → chunk-KI4DOTN4.js} +25 -2
- package/dist/chunk-KI4DOTN4.js.map +1 -0
- package/dist/{chunk-ZB7D62OA.js → chunk-KUZVRJ7M.js} +3 -3
- package/dist/chunk-L4VFNFDL.js +248 -0
- package/dist/chunk-L4VFNFDL.js.map +1 -0
- package/dist/chunk-M2WC5MF7.js +127 -0
- package/dist/chunk-M2WC5MF7.js.map +1 -0
- package/dist/{chunk-O3JIAU3V.js → chunk-MCTC6HSE.js} +157 -103
- package/dist/chunk-MCTC6HSE.js.map +1 -0
- package/dist/{chunk-PXFXSFJL.js → chunk-NZ5JU6D3.js} +9 -9
- package/dist/{chunk-YRBR424R.js → chunk-OAUI273L.js} +338 -165
- package/dist/chunk-OAUI273L.js.map +1 -0
- package/dist/chunk-OGLS76RN.js +43 -0
- package/dist/chunk-OGLS76RN.js.map +1 -0
- package/dist/{chunk-7LVM22VG.js → chunk-OQCRCXCP.js} +6 -6
- package/dist/chunk-OQCRCXCP.js.map +1 -0
- package/dist/{chunk-OLGPYOLO.js → chunk-P6OS7652.js} +5 -2
- package/dist/chunk-P6OS7652.js.map +1 -0
- package/dist/chunk-Q5L5EGWZ.js +26 -0
- package/dist/chunk-Q5L5EGWZ.js.map +1 -0
- package/dist/{chunk-S433N3CT.js → chunk-QTHVHNJJ.js} +6 -36
- package/dist/chunk-QTHVHNJJ.js.map +1 -0
- package/dist/chunk-RPET332G.js +84 -0
- package/dist/chunk-RPET332G.js.map +1 -0
- package/dist/{chunk-646CA6RV.js → chunk-RQW5YMH7.js} +12 -4
- package/dist/chunk-RQW5YMH7.js.map +1 -0
- package/dist/{chunk-XALU5LCU.js → chunk-RWNYIU6A.js} +550 -146
- package/dist/chunk-RWNYIU6A.js.map +1 -0
- package/dist/chunk-SL7YUHPV.js +111 -0
- package/dist/chunk-SL7YUHPV.js.map +1 -0
- package/dist/chunk-U5PWXS3J.js +39 -0
- package/dist/chunk-U5PWXS3J.js.map +1 -0
- package/dist/chunk-ULDCFL2O.js +273 -0
- package/dist/chunk-ULDCFL2O.js.map +1 -0
- package/dist/{chunk-RWNSW4FM.js → chunk-UMNXCU3K.js} +12 -6
- package/dist/{chunk-RWNSW4FM.js.map → chunk-UMNXCU3K.js.map} +1 -1
- package/dist/chunk-VI7ZANB3.js +193 -0
- package/dist/chunk-VI7ZANB3.js.map +1 -0
- package/dist/chunk-VQPHPQ5L.js +14 -0
- package/dist/chunk-VQPHPQ5L.js.map +1 -0
- package/dist/chunk-WNJTJRM6.js +147 -0
- package/dist/chunk-WNJTJRM6.js.map +1 -0
- package/dist/chunk-WOBSEO75.js +790 -0
- package/dist/chunk-WOBSEO75.js.map +1 -0
- package/dist/{chunk-BMHS4WAN.js → chunk-XS7EX55U.js} +156 -42
- package/dist/chunk-XS7EX55U.js.map +1 -0
- package/dist/chunk-YN4W7LCX.js +31 -0
- package/dist/chunk-YN4W7LCX.js.map +1 -0
- package/dist/chunk-YSJOZEI6.js +1 -0
- package/dist/{chunk-JA2ZAT5Q.js → chunk-Z4PJMZLM.js} +2 -2
- package/dist/chunk-Z4PJMZLM.js.map +1 -0
- package/dist/{chunk-7VPQHEAJ.js → chunk-ZNZISJDZ.js} +6 -2
- package/dist/chunk-ZNZISJDZ.js.map +1 -0
- package/dist/chunk-ZWN3AODA.js +11 -0
- package/dist/chunk-ZWN3AODA.js.map +1 -0
- package/dist/cli/index.js +25 -10
- package/dist/cli/index.js.map +1 -1
- package/dist/client/core.d.ts +1 -1
- package/dist/client/core.js +2 -0
- package/dist/client/core.js.map +1 -1
- package/dist/client/index.d.ts +44 -10
- package/dist/client/index.js +35 -0
- package/dist/client/index.js.map +1 -1
- package/dist/cloudflare-SIG42OIW.js +335 -0
- package/dist/cloudflare-SIG42OIW.js.map +1 -0
- package/dist/config-support-WQHQIJTA.js +104 -0
- package/dist/config-support-WQHQIJTA.js.map +1 -0
- package/dist/{csrf-BBrEZSBW.d.ts → csrf-Dgot9qSM.d.ts} +1 -1
- package/dist/deno-deploy-LQAYOOPW.js +196 -0
- package/dist/deno-deploy-LQAYOOPW.js.map +1 -0
- package/dist/{dev-MUWJAZRD.js → dev-ANDSEVLB.js} +28 -18
- package/dist/dev-ANDSEVLB.js.map +1 -0
- package/dist/{dev-emit-GWD6IXV7.js → dev-emit-BFNMDCPB.js} +5 -5
- package/dist/{dev-emit-NBT6JD7R.js → dev-emit-MVAJAFGX.js} +5 -3
- package/dist/dev-emit-MVAJAFGX.js.map +1 -0
- package/dist/engine-singleton-X4R7AZBJ.js +315 -0
- package/dist/engine-singleton-X4R7AZBJ.js.map +1 -0
- package/dist/{generate-Y3GWM57K.js → generate-EN6EDITF.js} +43 -4
- package/dist/generate-EN6EDITF.js.map +1 -0
- package/dist/index-CzxtQcnp.d.ts +1058 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +24 -13
- package/dist/index.js.map +1 -1
- package/dist/{info-XW7HGUPH.js → info-Y55RWS42.js} +8 -6
- package/dist/{info-XW7HGUPH.js.map → info-Y55RWS42.js.map} +1 -1
- package/dist/{internal-api-V5L65YSJ.js → internal-api-IP35YU3G.js} +22 -12
- package/dist/{internal-api-WEOSTMSN.js → internal-api-OPU456AT.js} +30 -16
- package/dist/internal-api-OPU456AT.js.map +1 -0
- package/dist/load-config-4ATXQUN3.js +16 -0
- package/dist/match-DmGgxjIU.d.ts +44 -0
- package/dist/{mcp-ULUFJNSZ.js → mcp-5LLNAGKA.js} +7 -7
- package/dist/netlify-C2IRCZKI.js +245 -0
- package/dist/netlify-C2IRCZKI.js.map +1 -0
- package/dist/node-OSVPYQ3D.js +10 -0
- package/dist/nonce-BXt7Qu_C.d.ts +31 -0
- package/dist/observability-bootstrap-MZMSOE66.js +15 -0
- package/dist/{openapi-HZXR335W.js → openapi-VFPEZSRI.js} +13 -11
- package/dist/{openapi-HZXR335W.js.map → openapi-VFPEZSRI.js.map} +1 -1
- package/dist/{plugin-runner-BFEcgtmJ.d.ts → plugin-runner-BVMOSxvb.d.ts} +1 -1
- package/dist/{plugin-types-D69-lJZ9.d.ts → plugin-types-BUVfUQ0V.d.ts} +13 -1
- package/dist/preview-GHPT2EQ5.js +23 -0
- package/dist/preview-GHPT2EQ5.js.map +1 -0
- package/dist/provider-resolver-Dx6QuWrw.d.ts +128 -0
- package/dist/registry-KBZDCFVQ.js +23 -0
- package/dist/route-config-Cm_ZMA1C.d.ts +72 -0
- package/dist/route-policy-BxOycCDq.d.ts +65 -0
- package/dist/router/element-scroll-restoration.d.ts +28 -0
- package/dist/router/element-scroll-restoration.js +96 -0
- package/dist/router/element-scroll-restoration.js.map +1 -0
- package/dist/{routes-OLNQX7CT.js → routes-BPLU3ISV.js} +11 -9
- package/dist/{routes-OLNQX7CT.js.map → routes-BPLU3ISV.js.map} +1 -1
- package/dist/{scan-7MJC6PYU.js → scan-YJEE4KQK.js} +2 -2
- package/dist/{schema-ZO3OSWVG.js → schema-SOAD43RQ.js} +7 -5
- package/dist/schemas-4AXHQMV3.js +25 -0
- package/dist/schemas-4AXHQMV3.js.map +1 -0
- package/dist/security-headers-Ccj7ncNx.d.ts +129 -0
- package/dist/server/agent/index.d.ts +2 -90
- package/dist/server/agent/index.js +1 -1
- package/dist/server/auth/index.d.ts +2 -21
- package/dist/server/auth/index.js +3 -2
- package/dist/server/cron/index.js +4 -3
- package/dist/server/define/index.d.ts +51 -57
- package/dist/server/define/index.js +10 -1
- package/dist/server/http/index.d.ts +7 -5
- package/dist/server/http/index.js +56 -12
- package/dist/server/index.d.ts +47 -439
- package/dist/server/index.js +119 -201
- package/dist/server/index.js.map +1 -1
- package/dist/server/jobs/index.js +4 -3
- package/dist/server/observability/index.d.ts +109 -35
- package/dist/server/observability/index.js +10 -7
- package/dist/server/plugins/index.d.ts +3 -3
- package/dist/server/scan/index.d.ts +47 -12
- package/dist/server/scan/index.js +13 -4
- package/dist/server/security/index.d.ts +61 -103
- package/dist/server/security/index.js +15 -6
- package/dist/server/webhook/index.d.ts +90 -3
- package/dist/server/webhook/index.js +12 -2
- package/dist/server-boundary-6B4ZQUY7.js +148 -0
- package/dist/server-boundary-6B4ZQUY7.js.map +1 -0
- package/dist/server-boundary-7VZQRPPX.js +133 -0
- package/dist/server-boundary-7VZQRPPX.js.map +1 -0
- package/dist/{services-typed-client-PSAGRPFF.js → services-typed-client-XGT5SUUN.js} +2 -2
- package/dist/{start-KR2JJR7K.js → start-UZDMOT7I.js} +342 -111
- package/dist/start-UZDMOT7I.js.map +1 -0
- package/dist/{static-M2W4HUWS.js → static-SVDWIOXJ.js} +24 -13
- package/dist/static-SVDWIOXJ.js.map +1 -0
- package/dist/{theo-cloud-XAHWOUFK.js → theo-cloud-3ET4G5T6.js} +9 -2
- package/dist/theo-cloud-3ET4G5T6.js.map +1 -0
- package/dist/vercel-BMCQKCWE.js +277 -0
- package/dist/vercel-BMCQKCWE.js.map +1 -0
- package/dist/vite-plugin/index.js +24 -13
- package/dist/vite-plugin-VKCT2LF2.js +42 -0
- package/dist/vite-plugin-VKCT2LF2.js.map +1 -0
- package/package.json +19 -6
- package/dist/actions-virtual-module-YQXRSSMW.js.map +0 -1
- package/dist/agent-7JJW3TPB.js +0 -15
- package/dist/app-typed-client-G3J5G7E5.js.map +0 -1
- package/dist/app-typed-client-GHO3EWZK.js.map +0 -1
- package/dist/aws-lambda-CYNDGU5O.js +0 -172
- package/dist/aws-lambda-CYNDGU5O.js.map +0 -1
- package/dist/build-WU6AKKIB.js.map +0 -1
- package/dist/bun-33RD6K7O.js.map +0 -1
- package/dist/chunk-646CA6RV.js.map +0 -1
- package/dist/chunk-6E5WKMDS.js +0 -67
- package/dist/chunk-6E5WKMDS.js.map +0 -1
- package/dist/chunk-6GGWS7J3.js +0 -91
- package/dist/chunk-6GGWS7J3.js.map +0 -1
- package/dist/chunk-7LVM22VG.js.map +0 -1
- package/dist/chunk-7VPQHEAJ.js.map +0 -1
- package/dist/chunk-A7JBF5FO.js.map +0 -1
- package/dist/chunk-AM3QABW5.js +0 -161
- package/dist/chunk-AM3QABW5.js.map +0 -1
- package/dist/chunk-BIVCP6X5.js.map +0 -1
- package/dist/chunk-BMHS4WAN.js.map +0 -1
- package/dist/chunk-E576KYYT.js.map +0 -1
- package/dist/chunk-FB2HBNIC.js.map +0 -1
- package/dist/chunk-FNTLKHZ7.js.map +0 -1
- package/dist/chunk-GRI4XHBJ.js.map +0 -1
- package/dist/chunk-GVW5EKEU.js +0 -422
- package/dist/chunk-GVW5EKEU.js.map +0 -1
- package/dist/chunk-GXEX4CBH.js.map +0 -1
- package/dist/chunk-HBU2GIMZ.js.map +0 -1
- package/dist/chunk-IEES3CHD.js.map +0 -1
- package/dist/chunk-J5MXCGKA.js.map +0 -1
- package/dist/chunk-JA2ZAT5Q.js.map +0 -1
- package/dist/chunk-KD5G3YXI.js.map +0 -1
- package/dist/chunk-LNVMHQ2Z.js +0 -54
- package/dist/chunk-LNVMHQ2Z.js.map +0 -1
- package/dist/chunk-LXAESF4Y.js.map +0 -1
- package/dist/chunk-MTEWLGVY.js.map +0 -1
- package/dist/chunk-O3JIAU3V.js.map +0 -1
- package/dist/chunk-OJLL4YD6.js +0 -403
- package/dist/chunk-OJLL4YD6.js.map +0 -1
- package/dist/chunk-OLGPYOLO.js.map +0 -1
- package/dist/chunk-S433N3CT.js.map +0 -1
- package/dist/chunk-T5C46IIU.js.map +0 -1
- package/dist/chunk-U267AOWS.js +0 -28
- package/dist/chunk-U267AOWS.js.map +0 -1
- package/dist/chunk-UW2TEAGR.js +0 -77
- package/dist/chunk-UW2TEAGR.js.map +0 -1
- package/dist/chunk-WPJOTQA5.js +0 -1
- package/dist/chunk-XALU5LCU.js.map +0 -1
- package/dist/chunk-XR74JD4M.js +0 -457
- package/dist/chunk-XR74JD4M.js.map +0 -1
- package/dist/chunk-YGAXV5HR.js.map +0 -1
- package/dist/chunk-YRBR424R.js.map +0 -1
- package/dist/cloudflare-KYUWCEPL.js +0 -122
- package/dist/cloudflare-KYUWCEPL.js.map +0 -1
- package/dist/deno-deploy-CCTB7HGS.js +0 -107
- package/dist/deno-deploy-CCTB7HGS.js.map +0 -1
- package/dist/dev-MUWJAZRD.js.map +0 -1
- package/dist/dev-emit-NBT6JD7R.js.map +0 -1
- package/dist/generate-Y3GWM57K.js.map +0 -1
- package/dist/index-BEtEv6ZH.d.ts +0 -575
- package/dist/load-config-VKD6LKWU.js +0 -14
- package/dist/match-CfbEFRG4.d.ts +0 -26
- package/dist/netlify-AFMDNKT4.js +0 -150
- package/dist/netlify-AFMDNKT4.js.map +0 -1
- package/dist/node-ZJQEJSP3.js +0 -10
- package/dist/registry-GKR3EWRW.js +0 -23
- package/dist/start-KR2JJR7K.js.map +0 -1
- package/dist/static-M2W4HUWS.js.map +0 -1
- package/dist/theo-cloud-XAHWOUFK.js.map +0 -1
- package/dist/vercel-SRS2DH6O.js +0 -133
- package/dist/vercel-SRS2DH6O.js.map +0 -1
- package/dist/vite-plugin-VPJFD4HK.js +0 -36
- /package/dist/{chunk-WPJOTQA5.js.map → adapters/agent-mount.js.map} +0 -0
- /package/dist/{agent-7JJW3TPB.js.map → agent-GKUEL6OH.js.map} +0 -0
- /package/dist/{check-45NKUVSQ.js.map → check-GIPZBFTX.js.map} +0 -0
- /package/dist/{chunk-47CINLWF.js.map → chunk-44J2ANQC.js.map} +0 -0
- /package/dist/{chunk-ZB7D62OA.js.map → chunk-KUZVRJ7M.js.map} +0 -0
- /package/dist/{chunk-PXFXSFJL.js.map → chunk-NZ5JU6D3.js.map} +0 -0
- /package/dist/{internal-api-WEOSTMSN.js.map → chunk-YSJOZEI6.js.map} +0 -0
- /package/dist/{dev-emit-GWD6IXV7.js.map → dev-emit-BFNMDCPB.js.map} +0 -0
- /package/dist/{internal-api-V5L65YSJ.js.map → internal-api-IP35YU3G.js.map} +0 -0
- /package/dist/{load-config-VKD6LKWU.js.map → load-config-4ATXQUN3.js.map} +0 -0
- /package/dist/{mcp-ULUFJNSZ.js.map → mcp-5LLNAGKA.js.map} +0 -0
- /package/dist/{node-ZJQEJSP3.js.map → node-OSVPYQ3D.js.map} +0 -0
- /package/dist/{scan-7MJC6PYU.js.map → observability-bootstrap-MZMSOE66.js.map} +0 -0
- /package/dist/{registry-GKR3EWRW.js.map → registry-KBZDCFVQ.js.map} +0 -0
- /package/dist/{schema-ZO3OSWVG.js.map → scan-YJEE4KQK.js.map} +0 -0
- /package/dist/{vite-plugin-VPJFD4HK.js.map → schema-SOAD43RQ.js.map} +0 -0
- /package/dist/{services-typed-client-PSAGRPFF.js.map → services-typed-client-XGT5SUUN.js.map} +0 -0
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import "tsx/esm";
|
|
3
|
+
|
|
4
|
+
// src/config/schemas/rate-limit.ts
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
var baseRateLimitSchema = z.object({
|
|
7
|
+
windowMs: z.number().min(1),
|
|
8
|
+
max: z.number().int().min(1)
|
|
9
|
+
});
|
|
10
|
+
var rateLimitSchema = z.union([
|
|
11
|
+
baseRateLimitSchema,
|
|
12
|
+
z.object({
|
|
13
|
+
default: baseRateLimitSchema.optional(),
|
|
14
|
+
routes: z.record(z.string(), baseRateLimitSchema).optional(),
|
|
15
|
+
keyBy: z.union([
|
|
16
|
+
z.enum(["ip", "session", "user"]),
|
|
17
|
+
z.function({ input: z.tuple([z.unknown()]), output: z.string() })
|
|
18
|
+
]).optional(),
|
|
19
|
+
cookieName: z.string().min(1).optional(),
|
|
20
|
+
/**
|
|
21
|
+
* How many reverse proxies sit in front of the app, for `keyBy: 'ip'`. `false` (default)
|
|
22
|
+
* trusts none; `true` means one; a number names a longer chain.
|
|
23
|
+
*
|
|
24
|
+
* Required for correct limiting behind Caddy/nginx/a load balancer — without it every visitor
|
|
25
|
+
* keys on the proxy address and shares a single bucket. Off by default because
|
|
26
|
+
* `x-forwarded-for` is client-writable.
|
|
27
|
+
*/
|
|
28
|
+
trustProxy: z.union([z.boolean(), z.number().int().min(0)]).optional()
|
|
29
|
+
})
|
|
30
|
+
]);
|
|
31
|
+
|
|
32
|
+
// src/config/schemas/upload.ts
|
|
33
|
+
import { z as z2 } from "zod";
|
|
34
|
+
var uploadSchema = z2.object({
|
|
35
|
+
maxFileSize: z2.number().min(1).default(10 * 1024 * 1024),
|
|
36
|
+
// 10MB
|
|
37
|
+
maxFiles: z2.number().int().min(1).default(10),
|
|
38
|
+
maxFieldSize: z2.number().min(1).default(1 * 1024 * 1024)
|
|
39
|
+
// 1MB
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// src/config/schemas/logging.ts
|
|
43
|
+
import { z as z3 } from "zod";
|
|
44
|
+
var loggingSchema = z3.object({
|
|
45
|
+
level: z3.enum(["debug", "info", "warn", "error", "silent"]).default("info")
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
// src/config/schemas/cache.ts
|
|
49
|
+
import { z as z4 } from "zod";
|
|
50
|
+
var routeRuleSchema = z4.object({
|
|
51
|
+
maxAge: z4.number().nonnegative().optional(),
|
|
52
|
+
swr: z4.number().nonnegative().optional(),
|
|
53
|
+
tags: z4.array(z4.string()).optional()
|
|
54
|
+
});
|
|
55
|
+
var cacheSchema = z4.object({
|
|
56
|
+
enabled: z4.boolean().default(true),
|
|
57
|
+
/** 'memory' uses InMemoryCacheAdapter; otherwise pass a custom adapter instance. */
|
|
58
|
+
storage: z4.union([z4.literal("memory"), z4.custom()]).default("memory"),
|
|
59
|
+
maxEntries: z4.number().int().positive().default(1e3),
|
|
60
|
+
defaults: z4.object({
|
|
61
|
+
maxAge: z4.number().nonnegative().default(1),
|
|
62
|
+
swr: z4.number().nonnegative().optional(),
|
|
63
|
+
cacheErrors: z4.boolean().default(false)
|
|
64
|
+
}).default({ maxAge: 1, cacheErrors: false }),
|
|
65
|
+
keyDerivation: z4.object({
|
|
66
|
+
excludeQuery: z4.array(z4.string()).optional(),
|
|
67
|
+
sortQuery: z4.boolean().default(true),
|
|
68
|
+
lowercaseHost: z4.boolean().default(true)
|
|
69
|
+
}).default({ sortQuery: true, lowercaseHost: true }),
|
|
70
|
+
routeRules: z4.record(z4.string(), routeRuleSchema).optional()
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
// src/config/schemas/observability.ts
|
|
74
|
+
import { z as z5 } from "zod";
|
|
75
|
+
var observabilitySchema = z5.object({
|
|
76
|
+
/** Set `false` to opt out even when the environment would enable an exporter. */
|
|
77
|
+
enabled: z5.boolean().default(true),
|
|
78
|
+
/**
|
|
79
|
+
* An `ObservabilityAdapter` instance. Validated structurally rather than by
|
|
80
|
+
* shape, for the same reason `storage` and `plugins` are: the config layer
|
|
81
|
+
* cannot import the adapter contract without inverting the module graph, and
|
|
82
|
+
* the adapter is a live object rather than data.
|
|
83
|
+
*/
|
|
84
|
+
provider: z5.custom().optional()
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
// src/config/schemas/security.ts
|
|
88
|
+
import { z as z7 } from "zod";
|
|
89
|
+
|
|
90
|
+
// src/config/schemas/header-safe.ts
|
|
91
|
+
import { z as z6 } from "zod";
|
|
92
|
+
var headerSafeString = z6.string().refine((s) => !/[\r\n]/.test(s), { message: "Header value must not contain CR/LF" });
|
|
93
|
+
|
|
94
|
+
// src/config/schemas/security.ts
|
|
95
|
+
var securityHeadersSchema = z7.object({
|
|
96
|
+
csp: z7.union([headerSafeString, z7.literal(false)]).optional(),
|
|
97
|
+
// T6.1 — default flipped from 'report-only' to 'enforce' for 0.3.0.
|
|
98
|
+
// Users who want the old behaviour set `cspMode: 'report-only'`
|
|
99
|
+
// explicitly.
|
|
100
|
+
cspMode: z7.enum(["enforce", "report-only", "off"]).default("enforce"),
|
|
101
|
+
hsts: z7.union([headerSafeString, z7.literal(false)]).optional(),
|
|
102
|
+
frameOptions: z7.enum(["DENY", "SAMEORIGIN"]).default("DENY"),
|
|
103
|
+
contentTypeOptions: z7.literal("nosniff").default("nosniff"),
|
|
104
|
+
referrerPolicy: headerSafeString.default("strict-origin-when-cross-origin"),
|
|
105
|
+
/**
|
|
106
|
+
* T1.1 — Permissions-Policy directive string. EC-3-refined: rejects CR/LF.
|
|
107
|
+
* Pass `false` to suppress the header.
|
|
108
|
+
*/
|
|
109
|
+
permissionsPolicy: z7.union([headerSafeString, z7.literal(false)]).optional()
|
|
110
|
+
});
|
|
111
|
+
var disallowedConfigSchema = z7.object({
|
|
112
|
+
routes: z7.array(z7.union([z7.string(), z7.instanceof(RegExp)])),
|
|
113
|
+
behavior: z7.enum(["warn", "raise"]).default("raise")
|
|
114
|
+
});
|
|
115
|
+
var corsSchema = z7.object({
|
|
116
|
+
origins: z7.union([
|
|
117
|
+
z7.literal("*"),
|
|
118
|
+
headerSafeString,
|
|
119
|
+
z7.instanceof(RegExp),
|
|
120
|
+
z7.array(z7.union([headerSafeString, z7.instanceof(RegExp)])),
|
|
121
|
+
z7.function({ input: z7.tuple([z7.string()]), output: z7.boolean() })
|
|
122
|
+
]),
|
|
123
|
+
methods: z7.array(z7.enum(["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "HEAD"])).optional(),
|
|
124
|
+
allowedHeaders: z7.array(headerSafeString).optional(),
|
|
125
|
+
exposedHeaders: z7.array(headerSafeString).optional(),
|
|
126
|
+
credentials: z7.boolean().default(false),
|
|
127
|
+
maxAge: z7.number().int().min(0).max(86400).default(600)
|
|
128
|
+
}).refine((c) => !(c.origins === "*" && c.credentials), {
|
|
129
|
+
message: 'CORS spec forbids origins:"*" with credentials:true \u2014 browsers ignore the wildcard'
|
|
130
|
+
});
|
|
131
|
+
var securitySchema = z7.object({
|
|
132
|
+
// T6.1 — default flipped from 'warn' to 'strict' for 0.3.0. Apps that
|
|
133
|
+
// grep their warn-mode logs from 0.2.x already know which endpoints
|
|
134
|
+
// break; opt back into 'warn' globally OR use disallowedRoutes for
|
|
135
|
+
// surgical migration.
|
|
136
|
+
csrf: z7.enum(["off", "warn", "strict"]).default("strict"),
|
|
137
|
+
headers: securityHeadersSchema.optional(),
|
|
138
|
+
/** T5.1 — per-route escalation (Rails disallowed_warnings pattern). */
|
|
139
|
+
disallowed: disallowedConfigSchema.optional(),
|
|
140
|
+
/** T1.2 — Cross-Origin Resource Sharing. Single global config; runs first in pipeline. */
|
|
141
|
+
cors: corsSchema.optional()
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
// src/config/schemas/storage.ts
|
|
145
|
+
import { z as z8 } from "zod";
|
|
146
|
+
var tlsConfigSchema = z8.object({
|
|
147
|
+
rejectUnauthorized: z8.boolean().optional(),
|
|
148
|
+
caCert: z8.string().optional(),
|
|
149
|
+
clientCert: z8.string().optional(),
|
|
150
|
+
clientKey: z8.string().optional()
|
|
151
|
+
});
|
|
152
|
+
var serverConfigSchema = z8.object({
|
|
153
|
+
host: z8.string().min(1),
|
|
154
|
+
port: z8.number().int().positive().max(65535).optional(),
|
|
155
|
+
user: z8.string().min(1),
|
|
156
|
+
/** Password may be the empty string (some providers permit it). */
|
|
157
|
+
password: z8.string(),
|
|
158
|
+
tls: tlsConfigSchema.optional()
|
|
159
|
+
});
|
|
160
|
+
var postgresPoolConfigSchema = z8.object({
|
|
161
|
+
min: z8.number().int().nonnegative().optional(),
|
|
162
|
+
max: z8.number().int().positive().optional(),
|
|
163
|
+
connectionTimeoutMillis: z8.number().int().positive().optional(),
|
|
164
|
+
idleTimeoutMillis: z8.number().int().nonnegative().optional()
|
|
165
|
+
});
|
|
166
|
+
var postgresDatabaseConfigSchema = z8.object({
|
|
167
|
+
/** References a key in `storage.servers`. Resolved at `usePostgres()` call time. */
|
|
168
|
+
server: z8.string().min(1),
|
|
169
|
+
database: z8.string().min(1),
|
|
170
|
+
pool: postgresPoolConfigSchema.optional()
|
|
171
|
+
});
|
|
172
|
+
var redisServerConfigSchema = serverConfigSchema.extend({
|
|
173
|
+
db: z8.number().int().nonnegative().optional(),
|
|
174
|
+
maxRetriesPerRequest: z8.number().int().nonnegative().optional()
|
|
175
|
+
});
|
|
176
|
+
var storageSchema = z8.object({
|
|
177
|
+
servers: z8.record(z8.string(), serverConfigSchema).optional(),
|
|
178
|
+
databases: z8.record(z8.string(), postgresDatabaseConfigSchema).optional(),
|
|
179
|
+
redis: z8.record(z8.string(), redisServerConfigSchema).optional()
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
export {
|
|
183
|
+
rateLimitSchema,
|
|
184
|
+
uploadSchema,
|
|
185
|
+
loggingSchema,
|
|
186
|
+
cacheSchema,
|
|
187
|
+
observabilitySchema,
|
|
188
|
+
securityHeadersSchema,
|
|
189
|
+
corsSchema,
|
|
190
|
+
securitySchema,
|
|
191
|
+
storageSchema
|
|
192
|
+
};
|
|
193
|
+
//# sourceMappingURL=chunk-VI7ZANB3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/config/schemas/rate-limit.ts","../src/config/schemas/upload.ts","../src/config/schemas/logging.ts","../src/config/schemas/cache.ts","../src/config/schemas/observability.ts","../src/config/schemas/security.ts","../src/config/schemas/header-safe.ts","../src/config/schemas/storage.ts"],"sourcesContent":["import { z } from 'zod'\n\n/**\n * Base bucket config — legacy shape preserved for backwards compatibility.\n */\nconst baseRateLimitSchema = z.object({\n windowMs: z.number().min(1),\n max: z.number().int().min(1),\n})\n\n/**\n * T2.2 — Per-route + per-user rate limit. The new shape adds `routes`\n * (path map), `keyBy`, and `cookieName`. The legacy flat shape is still\n * accepted via the union — see `createRouteRateLimiter` for normalization.\n */\nexport const rateLimitSchema = z.union([\n baseRateLimitSchema,\n z.object({\n default: baseRateLimitSchema.optional(),\n routes: z.record(z.string(), baseRateLimitSchema).optional(),\n keyBy: z\n .union([\n z.enum(['ip', 'session', 'user']),\n z.function({ input: z.tuple([z.unknown()]), output: z.string() }),\n ])\n .optional(),\n cookieName: z.string().min(1).optional(),\n /**\n * How many reverse proxies sit in front of the app, for `keyBy: 'ip'`. `false` (default)\n * trusts none; `true` means one; a number names a longer chain.\n *\n * Required for correct limiting behind Caddy/nginx/a load balancer — without it every visitor\n * keys on the proxy address and shares a single bucket. Off by default because\n * `x-forwarded-for` is client-writable.\n */\n trustProxy: z.union([z.boolean(), z.number().int().min(0)]).optional(),\n }),\n])\n","import { z } from 'zod'\n\nexport const uploadSchema = z.object({\n maxFileSize: z\n .number()\n .min(1)\n .default(10 * 1024 * 1024), // 10MB\n maxFiles: z.number().int().min(1).default(10),\n maxFieldSize: z\n .number()\n .min(1)\n .default(1 * 1024 * 1024), // 1MB\n})\n","import { z } from 'zod'\n\nexport const loggingSchema = z.object({\n level: z.enum(['debug', 'info', 'warn', 'error', 'silent']).default('info'),\n})\n","import { z } from 'zod'\n\n// `.finite()` was removed from the 4 numeric schemas below (agent-builder#319): in zod 4 it is a\n// no-op — `z.number()` already rejects `Infinity`, `-Infinity` and `NaN` by default. Measured before\n// removing, against the installed zod 4.4.3, and not assumed from the deprecation message: all five\n// cases (`Infinity`, `-Infinity`, `NaN`, `1.5`, `0`) give the SAME verdict with and without it.\n\n/**\n * Cache subsystem config (caching-and-revalidation-plan).\n * Default `cache: undefined` keeps the framework backward-compatible\n * (no engine initialized → no cache primitives available).\n *\n * Setting `cache: {}` opts in with all defaults.\n */\nconst routeRuleSchema = z.object({\n maxAge: z.number().nonnegative().optional(),\n swr: z.number().nonnegative().optional(),\n tags: z.array(z.string()).optional(),\n})\n\nexport const cacheSchema = z.object({\n enabled: z.boolean().default(true),\n /** 'memory' uses InMemoryCacheAdapter; otherwise pass a custom adapter instance. */\n storage: z.union([z.literal('memory'), z.custom<unknown>()]).default('memory'),\n maxEntries: z.number().int().positive().default(1000),\n defaults: z\n .object({\n maxAge: z.number().nonnegative().default(1),\n swr: z.number().nonnegative().optional(),\n cacheErrors: z.boolean().default(false),\n })\n .default({ maxAge: 1, cacheErrors: false }),\n keyDerivation: z\n .object({\n excludeQuery: z.array(z.string()).optional(),\n sortQuery: z.boolean().default(true),\n lowercaseHost: z.boolean().default(true),\n })\n .default({ sortQuery: true, lowercaseHost: true }),\n routeRules: z.record(z.string(), routeRuleSchema).optional(),\n})\n","import { z } from 'zod'\n\n/**\n * Observability subsystem config.\n *\n * `adapter-registry.ts` has documented `theo.config.ts > observability.provider`\n * as the first source in its resolution chain since it was written, and the key\n * did not exist in the schema — so the chain's highest-priority entry was\n * unreachable and every consumer fell through to the environment\n * (usetheokit/theokit#353).\n *\n * Default `observability: undefined` keeps telemetry off, which is what an\n * application that never asked for it should get.\n */\nexport const observabilitySchema = z.object({\n /** Set `false` to opt out even when the environment would enable an exporter. */\n enabled: z.boolean().default(true),\n /**\n * An `ObservabilityAdapter` instance. Validated structurally rather than by\n * shape, for the same reason `storage` and `plugins` are: the config layer\n * cannot import the adapter contract without inverting the module graph, and\n * the adapter is a live object rather than data.\n */\n provider: z.custom<unknown>().optional(),\n})\n","import { z } from 'zod'\n\nimport { headerSafeString } from './header-safe.js'\n\n/**\n * Phase 5 — CSRF warn-first (EC-1).\n *\n * 0.2.0 default: `warn`. Existing apps keep working but get structured\n * warnings about every state-mutating request that does not carry the\n * `X-Theo-Action: 1` header. 0.3.0 will flip the default to `strict`.\n *\n * Set explicitly to `strict` to opt into the future default early,\n * or `off` to disable CSRF entirely (only valid when you have another\n * defense — bearer auth, no session cookies, etc).\n */\n\n/**\n * Phase 6 — Default security headers (D4 / EC-2).\n *\n * 0.2.0 defaults:\n * - CSP in `report-only` mode (EC-2: don't break existing apps)\n * - X-Frame-Options: DENY · X-Content-Type-Options: nosniff\n * - Referrer-Policy: strict-origin-when-cross-origin\n * - HSTS in production only (no TLS on localhost)\n *\n * Users override individual headers, swap CSP to `enforce`, or disable\n * CSP entirely (`csp: false` / `cspMode: 'off'`).\n */\nexport const securityHeadersSchema = z.object({\n csp: z.union([headerSafeString, z.literal(false)]).optional(),\n // T6.1 — default flipped from 'report-only' to 'enforce' for 0.3.0.\n // Users who want the old behaviour set `cspMode: 'report-only'`\n // explicitly.\n cspMode: z.enum(['enforce', 'report-only', 'off']).default('enforce'),\n hsts: z.union([headerSafeString, z.literal(false)]).optional(),\n frameOptions: z.enum(['DENY', 'SAMEORIGIN']).default('DENY'),\n contentTypeOptions: z.literal('nosniff').default('nosniff'),\n referrerPolicy: headerSafeString.default('strict-origin-when-cross-origin'),\n /**\n * T1.1 — Permissions-Policy directive string. EC-3-refined: rejects CR/LF.\n * Pass `false` to suppress the header.\n */\n permissionsPolicy: z.union([headerSafeString, z.literal(false)]).optional(),\n})\n\n/**\n * T5.1 — Disallowed-routes escalation pattern (Rails-inspired).\n *\n * `routes` accepts string (exact match — trailing slash matters) or\n * RegExp entries. Matched routes that would otherwise emit `csrf.warn`\n * dispatch through `disallowedBehavior` instead:\n * - `'warn'` : no-op vs the default warn-mode behavior\n * - `'raise'` : escalate to 403, even when global `csrf` mode is 'warn'\n *\n * Use to roll out strict mode per-route (e.g., flip /api/auth/* first)\n * without committing the entire surface to strict at once.\n */\nconst disallowedConfigSchema = z.object({\n routes: z.array(z.union([z.string(), z.instanceof(RegExp)])),\n behavior: z.enum(['warn', 'raise']).default('raise'),\n})\n\n/**\n * T1.2 — CORS configuration.\n *\n * `origins` accepts a single value (`'*'`, string, RegExp, callback) OR an\n * array of (string | RegExp). The spec-violating `origins: '*'` +\n * `credentials: true` combination is rejected at parse time (browsers\n * ignore wildcards when credentials are sent).\n *\n * EC-3 — `allowedHeaders` and `exposedHeaders` entries go through the\n * header-safe refinement (CR/LF rejected — CWE-113 mitigation).\n */\nexport const corsSchema = z\n .object({\n origins: z.union([\n z.literal('*'),\n headerSafeString,\n z.instanceof(RegExp),\n z.array(z.union([headerSafeString, z.instanceof(RegExp)])),\n z.function({ input: z.tuple([z.string()]), output: z.boolean() }),\n ]),\n methods: z\n .array(z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS', 'HEAD']))\n .optional(),\n allowedHeaders: z.array(headerSafeString).optional(),\n exposedHeaders: z.array(headerSafeString).optional(),\n credentials: z.boolean().default(false),\n maxAge: z.number().int().min(0).max(86400).default(600),\n })\n .refine((c) => !(c.origins === '*' && c.credentials), {\n message: 'CORS spec forbids origins:\"*\" with credentials:true — browsers ignore the wildcard',\n })\n\nexport const securitySchema = z.object({\n // T6.1 — default flipped from 'warn' to 'strict' for 0.3.0. Apps that\n // grep their warn-mode logs from 0.2.x already know which endpoints\n // break; opt back into 'warn' globally OR use disallowedRoutes for\n // surgical migration.\n csrf: z.enum(['off', 'warn', 'strict']).default('strict'),\n headers: securityHeadersSchema.optional(),\n /** T5.1 — per-route escalation (Rails disallowed_warnings pattern). */\n disallowed: disallowedConfigSchema.optional(),\n /** T1.2 — Cross-Origin Resource Sharing. Single global config; runs first in pipeline. */\n cors: corsSchema.optional(),\n})\n","import { z } from 'zod'\n\n/**\n * EC-3 — CWE-113 HTTP Response Splitting mitigation.\n *\n * Every string that becomes a header value must reject CR/LF. Apps that\n * derive header values from untrusted input (feature flags, tenant config,\n * URL params) would otherwise let attackers inject Set-Cookie / Location\n * headers via `\\r\\n`. Apply this refinement to every header-bound string\n * field: permissionsPolicy, csp, hsts, referrerPolicy, CORS allow/expose.\n */\nexport const headerSafeString = z\n .string()\n .refine((s) => !/[\\r\\n]/.test(s), { message: 'Header value must not contain CR/LF' })\n","import { z } from 'zod'\n\n/**\n * StorageManager schemas (T1.1 / ADR-0007 D4).\n *\n * `theo.config.ts > storage` declares Postgres servers (credentials), the\n * databases on each server (TheoCloud / managed PG / self-host), and Redis\n * servers. The runtime `StorageManager` consumes this block; adapters\n * (PostgresJobBackend, PostgresConversationStorage, etc.) request pools by\n * database name and never see raw credentials at the call site.\n *\n * EC-1 (DOCUMENT in concept doc T4.1): Zod default strip-unknown mode\n * silently drops typo keys (`databasees` instead of `databases`). The\n * concept doc warns users to use exact names; runtime errors are still\n * actionable (`Database \"X\" not configured`).\n *\n * EC-2 (DEFERRED to use-time): `databases.X.server` references a key in\n * `servers`. Cross-field validation is intentionally NOT enforced at parse\n * time — `StorageManager.usePostgres()` throws an actionable error on the\n * first call with the dangling reference, matching Rails / Nitro behavior.\n */\nconst tlsConfigSchema = z.object({\n rejectUnauthorized: z.boolean().optional(),\n caCert: z.string().optional(),\n clientCert: z.string().optional(),\n clientKey: z.string().optional(),\n})\n\nconst serverConfigSchema = z.object({\n host: z.string().min(1),\n port: z.number().int().positive().max(65535).optional(),\n user: z.string().min(1),\n /** Password may be the empty string (some providers permit it). */\n password: z.string(),\n tls: tlsConfigSchema.optional(),\n})\n\nconst postgresPoolConfigSchema = z.object({\n min: z.number().int().nonnegative().optional(),\n max: z.number().int().positive().optional(),\n connectionTimeoutMillis: z.number().int().positive().optional(),\n idleTimeoutMillis: z.number().int().nonnegative().optional(),\n})\n\nconst postgresDatabaseConfigSchema = z.object({\n /** References a key in `storage.servers`. Resolved at `usePostgres()` call time. */\n server: z.string().min(1),\n database: z.string().min(1),\n pool: postgresPoolConfigSchema.optional(),\n})\n\nconst redisServerConfigSchema = serverConfigSchema.extend({\n db: z.number().int().nonnegative().optional(),\n maxRetriesPerRequest: z.number().int().nonnegative().optional(),\n})\n\nexport const storageSchema = z.object({\n servers: z.record(z.string(), serverConfigSchema).optional(),\n databases: z.record(z.string(), postgresDatabaseConfigSchema).optional(),\n redis: z.record(z.string(), redisServerConfigSchema).optional(),\n})\n\nexport type StorageConfig = z.infer<typeof storageSchema>\n"],"mappings":"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","names":["z","z","z","z","z","z","z","z"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// src/vite-plugin/resolve-theo-root.ts
|
|
2
|
+
import { existsSync } from "fs";
|
|
3
|
+
import { resolve } from "path";
|
|
4
|
+
function resolveTheoRootDir(currentDir) {
|
|
5
|
+
if (existsSync(resolve(currentDir, "client"))) {
|
|
6
|
+
return currentDir;
|
|
7
|
+
}
|
|
8
|
+
return resolve(currentDir, "..");
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export {
|
|
12
|
+
resolveTheoRootDir
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=chunk-VQPHPQ5L.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/vite-plugin/resolve-theo-root.ts"],"mappings":";AAIA,SAAS,kBAAkB;AAC3B,SAAS,eAAe;AAiBjB,SAAS,mBAAmB,YAA4B;AAC7D,MAAI,WAAW,QAAQ,YAAY,QAAQ,CAAC,GAAG;AAC7C,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,YAAY,IAAI;AACjC;","names":[]}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
// src/server/_internal/log-safe.ts
|
|
2
|
+
var DEFAULT_MAX_LEN = 100;
|
|
3
|
+
function limitUntrustedHeaderValueForLogs(value, maxLen = DEFAULT_MAX_LEN) {
|
|
4
|
+
const truncated = value.length > maxLen ? `${value.slice(0, maxLen)}\u2026` : value;
|
|
5
|
+
return truncated.replace(/[\x00-\x1F\x7F]/g, (ch) => {
|
|
6
|
+
const code = ch.charCodeAt(0);
|
|
7
|
+
return `\\x${code.toString(16).padStart(2, "0").toUpperCase()}`;
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// src/server/security/wildcard-origin.ts
|
|
12
|
+
function matchWildcardDomain(domain, pattern) {
|
|
13
|
+
const normalizedDomain = domain.replace(/[A-Z]/g, (c) => c.toLowerCase());
|
|
14
|
+
const normalizedPattern = pattern.replace(/[A-Z]/g, (c) => c.toLowerCase());
|
|
15
|
+
const domainParts = normalizedDomain.split(".");
|
|
16
|
+
const patternParts = normalizedPattern.split(".");
|
|
17
|
+
if (patternParts.length < 1) return false;
|
|
18
|
+
if (domainParts.length < patternParts.length) return false;
|
|
19
|
+
if (patternParts.length === 1) {
|
|
20
|
+
const only = patternParts[0];
|
|
21
|
+
if (only === "*" || only === "**") return false;
|
|
22
|
+
}
|
|
23
|
+
while (patternParts.length > 0) {
|
|
24
|
+
const patternPart = patternParts.pop();
|
|
25
|
+
const domainPart = domainParts.pop();
|
|
26
|
+
if (patternPart === "") return false;
|
|
27
|
+
if (patternPart === "*") {
|
|
28
|
+
if (domainPart) continue;
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
if (patternPart === "**") {
|
|
32
|
+
if (patternParts.length > 0) return false;
|
|
33
|
+
return domainPart !== void 0;
|
|
34
|
+
}
|
|
35
|
+
if (domainPart !== patternPart) return false;
|
|
36
|
+
}
|
|
37
|
+
return domainParts.length === 0;
|
|
38
|
+
}
|
|
39
|
+
function isCsrfOriginAllowed(originDomain, allowedOrigins = []) {
|
|
40
|
+
const normalizedOrigin = originDomain.replace(/[A-Z]/g, (c) => c.toLowerCase());
|
|
41
|
+
return allowedOrigins.some((allowed) => {
|
|
42
|
+
if (!allowed) return false;
|
|
43
|
+
const normalizedAllowed = allowed.replace(/[A-Z]/g, (c) => c.toLowerCase());
|
|
44
|
+
return normalizedAllowed === normalizedOrigin || matchWildcardDomain(originDomain, allowed);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// src/server/security/csrf-multi-header.ts
|
|
49
|
+
function evaluateCsrfMultiHeaderFromInputs(inputs, ownOrigin, options) {
|
|
50
|
+
if (inputs.secFetchSite !== void 0) {
|
|
51
|
+
if (inputs.secFetchSite === "same-origin" || inputs.secFetchSite === "none") {
|
|
52
|
+
return { allow: true, signal: "sec-fetch-site" };
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
allow: false,
|
|
56
|
+
signal: "sec-fetch-site",
|
|
57
|
+
reason: `Sec-Fetch-Site header indicates ${limitUntrustedHeaderValueForLogs(inputs.secFetchSite)}`
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
if (inputs.origin !== void 0) {
|
|
61
|
+
if (inputs.origin === "null") {
|
|
62
|
+
return { allow: false, signal: "origin", reason: "Origin is null (opaque origin)" };
|
|
63
|
+
}
|
|
64
|
+
if (originMatches(inputs.origin, ownOrigin, options.allowedOrigins)) {
|
|
65
|
+
return { allow: true, signal: "origin" };
|
|
66
|
+
}
|
|
67
|
+
return { allow: false, signal: "origin", reason: "Origin not in allowlist" };
|
|
68
|
+
}
|
|
69
|
+
if (inputs.referer !== void 0) {
|
|
70
|
+
const refererOrigin = safeOriginFromUrl(inputs.referer);
|
|
71
|
+
if (refererOrigin === void 0) {
|
|
72
|
+
return { allow: false, signal: "referer", reason: "Referer not a valid URL" };
|
|
73
|
+
}
|
|
74
|
+
if (originMatches(refererOrigin, ownOrigin, options.allowedOrigins)) {
|
|
75
|
+
return { allow: true, signal: "referer" };
|
|
76
|
+
}
|
|
77
|
+
return { allow: false, signal: "referer", reason: "Referer origin not in allowlist" };
|
|
78
|
+
}
|
|
79
|
+
if (options.allowRequestsWithoutOriginCheck === true) {
|
|
80
|
+
return { allow: true, signal: "no-headers-allowed" };
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
allow: false,
|
|
84
|
+
signal: "no-headers",
|
|
85
|
+
reason: "No Sec-Fetch-Site / Origin / Referer header provided"
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
function evaluateCsrfMultiHeaderRequest(request, options = {}) {
|
|
89
|
+
const ownOrigin = getOwnOriginFromRequest(request, options.trustForwardedHeaders === true);
|
|
90
|
+
return evaluateCsrfMultiHeaderFromInputs(
|
|
91
|
+
{
|
|
92
|
+
secFetchSite: request.headers.get("sec-fetch-site") ?? void 0,
|
|
93
|
+
origin: request.headers.get("origin") ?? void 0,
|
|
94
|
+
referer: request.headers.get("referer") ?? void 0
|
|
95
|
+
},
|
|
96
|
+
ownOrigin,
|
|
97
|
+
options
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
function getOwnOriginFromRequest(request, trustForwarded) {
|
|
101
|
+
if (trustForwarded) {
|
|
102
|
+
const fwdHost = request.headers.get("x-forwarded-host");
|
|
103
|
+
if (fwdHost !== null && fwdHost.length > 0) {
|
|
104
|
+
const fwdProto = request.headers.get("x-forwarded-proto") ?? "http";
|
|
105
|
+
return `${fwdProto}://${fwdHost}`;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const host = request.headers.get("host");
|
|
109
|
+
if (host !== null && host.length > 0) {
|
|
110
|
+
return `http://${host}`;
|
|
111
|
+
}
|
|
112
|
+
try {
|
|
113
|
+
return new URL(request.url).origin;
|
|
114
|
+
} catch {
|
|
115
|
+
return void 0;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function originMatches(candidateOrigin, ownOrigin, allowedOrigins) {
|
|
119
|
+
if (candidateOrigin.toLowerCase() === ownOrigin?.toLowerCase()) {
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
const host = safeHostFromUrl(candidateOrigin);
|
|
123
|
+
if (host === void 0) return false;
|
|
124
|
+
if (allowedOrigins === void 0 || allowedOrigins.length === 0) return false;
|
|
125
|
+
return isCsrfOriginAllowed(host, allowedOrigins);
|
|
126
|
+
}
|
|
127
|
+
function safeOriginFromUrl(url) {
|
|
128
|
+
try {
|
|
129
|
+
return new URL(url).origin;
|
|
130
|
+
} catch {
|
|
131
|
+
return void 0;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function safeHostFromUrl(originLike) {
|
|
135
|
+
try {
|
|
136
|
+
return new URL(originLike).host;
|
|
137
|
+
} catch {
|
|
138
|
+
return void 0;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export {
|
|
143
|
+
matchWildcardDomain,
|
|
144
|
+
isCsrfOriginAllowed,
|
|
145
|
+
evaluateCsrfMultiHeaderRequest
|
|
146
|
+
};
|
|
147
|
+
//# sourceMappingURL=chunk-WNJTJRM6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server/_internal/log-safe.ts","../src/server/security/wildcard-origin.ts","../src/server/security/csrf-multi-header.ts"],"mappings":"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","names":[]}
|