npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

bun-prime

v0.2.2

Published

Prime is a light-weight, minimalistic framework for creating REST APIs using [Bun](https://bun.sh/). It is modeled lightly after the [Express](https://expressjs.com/) framework for Node.

Downloads

30

Readme

Prime

Prime is a light-weight, minimalistic framework for creating REST APIs using Bun. It is modeled lightly after the Express framework for Node.

Purpose

Prime is designed to let developers try out Bun quickly and easily using a more familiar API. It is not currently intended for use in a production environment.

Installation

You can install Prime with the Bun command: bun add bun-prime

Quickstart

Import the PrimeServer class and instantiate it with the port as an argument.

import { PrimeServer } from 'bun-prime'
const server = new PrimeServer(3000)

Add routes on the new instantiation.

server.get('/', (req) => {
  return new Response('Hello, Prime!')
})

Serve.

server.serve({ logStart: true }) // Will output message on server start

Features

Some fundamental features are currently present.

JSDoc

Most of the current implementations have thorough JSDoc details to make easy use of the API.

Route Parameters

You can use slugs in the routes. When you want to use parameters, add them as an object, and you can type them as well for easy access.

server.get('/blog/:id/content', (req, params: { id: number }) => {
  return new Response(`Blog ${params.id} content`)
})

You can use wildcards in routes. These support parameters as well. These routes should come after all non-wildcard routes to avoid catching requests too early.

server.get('/blog/:id/*', (req, params: { id: number }) => {
  return new Response(`Blog ${params.id} wildcard`)
})

Middleware

Middleware can be applied using the use method. These will run in order they are added to the route list, so the position of the middleware the code is important.

When you add middleware, you can access the request, and you can either return a response early to stop the request or leave the function void to continue to the next middleware or route.

server.use((req) => {
  if (!isAuthorized(req)) {
    return new Response('NOT OK', { status: 500 })
  }
})

Websocket

Web sockets are supported with a simple API. You only need to prepare the handlers.

const messageHandler = (ws, message) => {
  console.log(message)
}

server.ws('ws://localhost:3000', {
  open: openHandler,
  message: messageHandler,
  close: closeHandler,
  drain: drainHandler
})

With this, once the server is served, all incoming web socket connections will be handled appropriately.

Usage Details

  • Curently, a 404 will be returned by default when a route doesn't catch
  • Currently, a 500 will be returned on any error
  • Additional support for routes not found and error handling is not implemented

Development

This is a personal project that will continue while I experiment with Bun and with fundamentals of a reliable library for creating REST APIs. If any interest develops, I will devote more time to it.