Skip to content
/ radix3 Public
forked from unjs/radix3

🌳 Lightweight and fast router for JavaScript based on Radix Tree

License

Notifications You must be signed in to change notification settings

cuulee/radix3

 
 

Repository files navigation

🌳 radix3

npm version npm downloads Github Actions Codecov bundle

Lightweight and fast router for JavaScript based on Radix Tree.

Usage

Install package:

# npm
npm i radix3

# yarn
yarn add radix3

# pnpm
pnpm i radix3

Import:

// ESM
import { createRouter } from 'radix3'

// CJS
const { createRouter } = require('radix3')

Create a router instance and insert routes:

const router = createRouter()

router.insert('/path', { payload: 'this path' })
router.insert('/path/:name', { payload: 'named route' })
router.insert('/path/foo/**', { payload: 'wildcard route' })
router.insert('/path/foo/**:name', { payload: 'named wildcard route' })

*Match route to access matched data:

// { payload: 'this path' }
router.lookup('/path')

// { payload: 'named route', params: { name: 'fooval' } }
router.lookup('/path/fooval')

// { payload: 'wildcard route' }
router.lookup('/path/foo/bar/baz')

// null (no route matched for/)
router.lookup('/')

Methods

router.insert(path, data)

path can be static or using :placeholders and ** for wildcard paths.

The data object will be returned on matching params. It should be an object like { handler } and not containing reserved keyword params.

router.lookup(path)

Returns matched data for path with optional params key if mached route using placeholders.

router.lookupAll(prefix)

Find all data nodes matching path prefix.

router.remove(path)

Remove route matching path.

Performance

See benchmark.

License

Based on original work of charlieduong94/radix-router by Charlie Duong (MIT)

MIT - Made with ❤️

About

🌳 Lightweight and fast router for JavaScript based on Radix Tree

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 84.3%
  • JavaScript 15.7%