From 0556efb41f06f7c8e046dc04927aeb4f28b57923 Mon Sep 17 00:00:00 2001 From: Chris Wanstrath Date: Wed, 5 Nov 2025 15:02:42 -0800 Subject: [PATCH] expose `request` in ribbit --- src/ribbit.ts | 20 ++++++++++---------- src/server.ts | 3 ++- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/ribbit.ts b/src/ribbit.ts index 92df1ed..4dfd02f 100644 --- a/src/ribbit.ts +++ b/src/ribbit.ts @@ -53,6 +53,15 @@ for (const name of HTML5_TAGS) { ; (ribbitGlobals as any)[name].tagName = name } +const tag = async (tagName: string, atNamed = {}, ...args: any[]) => { + if (typeof args[0] === 'function') + await tagBlock(tagName, atNamed, args[0]) + else + tagCall(tagName, atNamed, ...args) + + return TAG_TOKEN +} + const tagBlock = async (tagName: string, props = {}, fn: Function) => { const attrs = Object.entries(props).map(([key, value]) => `${key}="${value}"`) const space = attrs.length ? ' ' : '' @@ -77,13 +86,4 @@ const tagCall = (tagName: string, atNamed = {}, ...args: any[]) => { buffer.push(`<${tagName}${space}${attrs.join(' ')} />`) else buffer.push(`<${tagName}${space}${attrs.join(' ')}>${children}`) -} - -const tag = async (tagName: string, atNamed = {}, ...args: any[]) => { - if (typeof args[0] === 'function') - await tagBlock(tagName, atNamed, args[0]) - else - tagCall(tagName, atNamed, ...args) - - return TAG_TOKEN -} +} \ No newline at end of file diff --git a/src/server.ts b/src/server.ts index 6127abf..cc445ac 100644 --- a/src/server.ts +++ b/src/server.ts @@ -25,6 +25,7 @@ export function startWeb(rootPath: string) { if (page === 'layout') return c.text('404 Not Found', 404) const params = c.req.query() + const request = { method: c.req.method } if (c.req.method === 'POST') { const formData = await c.req.formData() for (const [key, value] of formData.entries()) { @@ -39,7 +40,7 @@ export function startWeb(rootPath: string) { const layoutFile = Bun.file(layoutPath) let layoutCode = await layoutFile.exists() ? await layoutFile.text() : '' - const vm = new Shrimp(Object.assign({}, ribbitGlobals, { params })) + const vm = new Shrimp(Object.assign({}, ribbitGlobals, { params, request })) if (await file.exists()) { let content = ''