1.0.6 • Published 7 months ago
@skyfe79/tiny-router v1.0.6
@skyfe79/tiny-router
A lightweight and flexible TypeScript router implementation designed for:
- API Mocking & Testing: Create mock API endpoints with dynamic URL patterns for testing and development
- URL Pattern Matching: Parse and extract parameters from dynamic URLs
- API Gateway Simulation: Test API gateway routing logic locally
- Command Line Tools: Route command arguments to specific handlers
- Event Routing: Map event patterns to handlers in event-driven architectures
Installation
npm install @skyfe79/tiny-router
Usage
ESM (ECMAScript Modules)
import createTinyRouter from '@skyfe79/tiny-router';
const router = createTinyRouter();
// Basic route
router.map('/', (params) => {
console.log('Root path');
});
// Route with parameters
router.map('/users/:id', (params) => {
console.log('User ID:', params.id);
});
// Execute route
router.route('/users/123'); // User ID: 123
CommonJS
const { createTinyRouter } = require('@skyfe79/tiny-router');
const router = createTinyRouter();
// Basic route
router.map('/', (params) => {
console.log('Root path');
});
// Route with parameters
router.map('/users/:id', (params) => {
console.log('User ID:', params.id);
});
// Execute route
router.route('/users/123'); // User ID: 123
HTTP Method Support
The router supports the following HTTP methods:
// GET method (map is an alias for get)
router.get('/users/:id', (params) => {
console.log('GET User:', params.id);
});
// POST method
router.post('/users', (params) => {
console.log('Create User');
});
// PUT method
router.put('/users/:id', (params) => {
console.log('Update User:', params.id);
});
// DELETE method
router.delete('/users/:id', (params) => {
console.log('Delete User:', params.id);
});
// Specify method and path together
router.route('POST', '/users');
Advanced Routing Features
Optional Parameters
router.map('/users/:id?', (params) => {
if (params.id) {
console.log('User ID:', params.id);
} else {
console.log('All users');
}
});
Wildcards
// Single wildcard
router.map('/files/*', (params) => {
console.log('File path:', params.wildcard);
});
// Multiple wildcards
router.map('/files/*/versions/*', (params) => {
console.log('File paths:', params.wildcards);
});
Features
- Express-style route patterns
- Support for path parameters (
:param
) - Optional parameters (
:param?
) - Wildcard support (
*
) - Full HTTP method support
- TypeScript support with type definitions
- Works with both ESM and CommonJS
- Zero dependencies
- Lightweight and fast
License
MIT