Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

universal-autorouter

Package Overview
Dependencies
Maintainers
0
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

universal-autorouter

An universal plugin that scans the file system and automatically loads to a server all routes in a target directory.

  • 0.2.6
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
37
decreased by-85.14%
Maintainers
0
Weekly downloads
 
Created
Source

universal-autorouter

An universal plugin that scans the file system and automatically loads to a server all routes in a target directory.

Inspired by elysia-autoload package and compatible with Node.js and Bun runtimes.

⚙️ Install

yarn add universal-autorouter

📖 Usage

Register the Plugin (example with Hono)

// /app.ts
import path from 'node:path'
import { serve } from '@hono/node-server'
import { Hono } from 'hono'
import autoloadRoutes from 'universal-autorouter'

const app = new Hono()

await autoloadRoutes(app, {
  // Pattern to scan route files
  pattern: '**/*.ts',
  // Prefix to add to routes
  prefix: '/api',
  // Source directory of route files: use "relative" path
  routesDir: path.resolve(import.meta.dirname, 'api')
})

const port = +(process.env.PORT || 3000)

serve({
  fetch: app.fetch,
  port
}, () => console.log(`Server running at http://localhost:${port}`))

Create a Route

// /routes/index.ts
import type { Context } from 'hono'

export default (c: Context) => {
  return c.text('Hello World!')
}

Directory Structure

Guide on how universal-autorouter matches routes:

├── app.ts
├── routes
│   ├── index.ts         // index routes
│   ├── posts
│   │   ├── index.ts
│   │   └── [id].ts      // dynamic params
│   ├── likes
│   │   └── [...].ts     // wildcard
│   ├── domains
│   │   ├── @[...]       // wildcard with @ prefix
│   │   │   └── index.ts
│   ├── frontend
│   │   └── index.tsx    // usage of tsx extension
│   ├── events
│   │   ├── (post).ts    // dynamic method
│   │   └── (get).ts
│   └── users.ts
└── package.json
  • /routes/index.ts → GET /
  • /routes/posts/index.ts → GET /posts
  • /routes/posts/[id].ts → GET /posts/:id
  • /routes/users.ts → GET /users
  • /routes/likes/[...].ts → GET /likes/*
  • /routes/domains/@[...]/index.ts → GET /domains/@*
  • /routes/frontend/index.tsx → GET /frontend
  • /routes/events/(post).ts → POST /events
  • /routes/events/(get).ts → GET /events

Options

KeyTypeDefaultDescription
pattern?string**/*.{ts,tsx,js,jsx,mjs,cjs}Glob patterns
prefix?string Prefix to be added to each route
routesDir?string./routesThe folder where routes are located (use a relative path)
defaultMethod?Methodstringget
viteDevServer?ViteDevServerundefinedDeveloper server instance of Vite to use SSR module loader
skipNoRoutes?booleanfalseSkip the throw error when no routes are found
skipImportErrors?booleanfalseSkip the import errors with the default export of a rotue file

License

This project is licensed under the MIT License.

Keywords

FAQs

Package last updated on 13 Jan 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc