Nevertheless Published Mine

    @kapsonfire/bun-bakery
    TypeScript icon, indicating that this package has built-in type declarations

    0.3.2 • Public • Published

    Reliability Rating Security Rating

    Bun Bakery

    Bun-Bakery is a web framework for Bun. It uses a file based router in style like svelte-kit. No need to define routes during runtime.

    Quick Start

    bun add @kapsonfire/bun-bakery

    On your main script import Router from bun-bakery and define your pathes. i.e. main.ts

    import {Router} from "@kapsonfire/bun-bakery"
    
    new Router({
        assetsPath: import.meta.dir + '/assets/',
        routesPath: import.meta.dir + '/routes/'
    })

    After that run the server and open your browser http://localhost:3000

    bun main.ts

    Routing

    Routes are added automatically when creating files inside your routesPath when exporting functions with the corresponding Method Names. Given example above create index.ts inside routes/ and export a GET function calling ctx.sendResponse().

    import {Context} from "@kapsonfire/bun-bakery"
    
    export async function GET(ctx: Context) {
        ctx.sendResponse(new Response('hello world!'));
    }

    Parameters

    Routes can have parameters inside dirname and/or filename. Just put the parameter name inside brackets and it will be added to ctx.params. In example: given routes/user/[username].ts and open http://localhost:3000/user/kapsonfire

    import {Context} from "@kapsonfire/bun-bakery"
    
    export async function GET(ctx: Context) {
        ctx.sendResponse(new Response('hello '+ ctx.params.username +'!'));
    }

    will output hello kapsonfire!

    Spread Paramaters

    Routes can also have wildcard/spread paramaters. In example: given routes/users/[...usernames].ts and open http://localhost:3000/users/kapsonfire/jarred/tricked

    import {Context} from "@kapsonfire/bun-bakery"
    
    export async function GET(ctx: Context) {
        ctx.sendAsJson(JSON.stringify(ctx.params));
    }

    will output

    {"usernames":["kapsonfire","jarred","tricked"]}

    Handlers

    Inside the context variable you can access the native bun Request object inside ctx.request. ctx.sendResponse expects a native bun Response object.

    Middlewares

    bun-bakery supports some life-cycles to add middleware

    • onRequest will be called before the router handles the request
    • onRoute will be called before the route function will be called
    • onResponse will be called after the route function finished
    router.addMiddleware({
        onRequest: (ctx: Context) => { ctx.params.injected = "1"; console.log('onRequest', ctx) },
        onRoute: (ctx: Context) => console.log('onRoute', ctx),
        onResponse: (ctx: Context) => {
            ctx.response.headers.set('content-type', 'application/jsonx');
            console.log('onResponse', ctx)
        },
    });

    Install

    npm i @kapsonfire/bun-bakery

    DownloadsWeekly Downloads

    89

    Version

    0.3.2

    License

    MIT

    Unpacked Size

    28.1 kB

    Total Files

    13

    Last publish

    Collaborators

    • kapsonfire