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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@curisjs/core

v1.3.2

Published

High-performance, multi-runtime web framework built on Web Standards. Works with Bun, Deno, Node.js 18+, and edge runtimes.

Readme

@curisjs/core

High-performance, multi-runtime web framework built on Web Standards.

Philosophy

CurisJS is designed to be:

  • Fast: Optimized radix/trie router, minimal allocations, zero-copy streaming
  • Portable: Runs on Node.js 18+, Bun, Deno, Cloudflare Workers, Vercel Edge - without any adapters
  • Standards-first: Built entirely on Web Standard Request/Response APIs
  • Production-ready: Type-safe, well-tested, predictable performance

Architecture

Core Kernel (kernel.ts)
    ├─ Router (radix/trie)
    ├─ Context (minimal state container)
    ├─ Middleware chain (short-circuit support)
    └─ Runtime Detection (auto-detect Bun/Deno/Node)

Web Standards API
    ├─ Request (standard)
    ├─ Response (standard)
    ├─ Headers (standard)
    └─ FormData (standard)

Quick Start

Universal Example (Works on All Runtimes)

import { createApp, json } from '@curisjs/core';

const app = createApp();

app.get('/', (ctx) => {
  return json({ message: 'Hello World!' });
});

app.get('/users/:id', (ctx) => {
  return json({ userId: ctx.params.id });
});

// Auto-detects runtime and starts server
app.listen(3000);

Run on any runtime:

# Bun
bun run server.ts

# Deno
deno run --allow-net server.ts

# Node.js 18+
npx tsx server.ts

Cloudflare Workers / Vercel Edge

import { createApp, createHandler, json } from '@curisjs/core';

const app = createApp();

app.get('/', (ctx) => {
  return json({ message: 'Hello from the Edge!' });
});

// Export for edge runtime
export default createHandler(app);

Features

Routing

// Static routes
app.get('/users', handler);

// Named parameters
app.get('/users/:id', handler);
app.get('/posts/:postId/comments/:commentId', handler);

// Wildcards (must be last segment)
app.get('/files/*path', handler);

// All methods
app.all('/webhook', handler);

Middleware

import { cors, logger } from '@curisjs/framework/middleware';

// Global middleware
app.use(logger());
app.use(
  cors({
    origin: 'https://example.com',
    credentials: true,
  })
);

// Custom middleware
app.use(async (ctx, next) => {
  const start = Date.now();
  await next();
  console.log(`Request took ${Date.now() - start}ms`);
});

// Short-circuit middleware (return Response)
app.use(async (ctx, next) => {
  const auth = ctx.header('Authorization');
  if (!auth) {
    return new Response('Unauthorized', { status: 401 });
  }
  await next();
});

Response Helpers

import { json, text, html, redirect } from '@curisjs/framework/utils';

app.get('/api/user', (ctx) => {
  return json({ name: 'Alice', age: 30 });
});

app.get('/hello', (ctx) => {
  return text('Hello World!');
});

app.get('/page', (ctx) => {
  return html('<h1>Welcome</h1>');
});

app.get('/redirect', (ctx) => {
  return redirect('https://example.com', 302);
});

Context API

app.post('/api/users', async (ctx) => {
  // Parse JSON body
  const data = await ctx.json();

  // Get headers
  const auth = ctx.header('Authorization');

  // Get query params
  const page = ctx.query('page') || '1';

  // Get route params
  const userId = ctx.params.id;

  // Access state (shared across middleware)
  ctx.state.user = { id: 123 };

  return json({ success: true });
});

Performance

CurisJS is optimized for production workloads:

  • O(path_length) route matching with radix/trie router
  • Zero-allocation patterns on hot paths
  • Streaming-first body handling
  • Minimal per-request overhead

Benchmark against Hono and Fastify on your target platform:

cd bench
./run-benchmarks.sh

Development

# Install dependencies
pnpm install

# Build
pnpm build

# Test
pnpm test

# Benchmark
pnpm bench

License

MIT