https://github.com/skyfe79/tiny-router
A tiny router supporting Express-style route patterns
https://github.com/skyfe79/tiny-router
Last synced: 4 months ago
JSON representation
A tiny router supporting Express-style route patterns
- Host: GitHub
- URL: https://github.com/skyfe79/tiny-router
- Owner: skyfe79
- Created: 2024-12-20T14:46:51.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-12-22T12:23:04.000Z (over 1 year ago)
- Last Synced: 2024-12-30T16:36:31.036Z (over 1 year ago)
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/@skyfe79/tiny-router
- Size: 114 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# @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
```bash
npm install @skyfe79/tiny-router
```
## Usage
### ESM (ECMAScript Modules)
```typescript
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
```javascript
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:
```typescript
// 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
```typescript
router.map('/users/:id?', (params) => {
if (params.id) {
console.log('User ID:', params.id);
} else {
console.log('All users');
}
});
```
### Wildcards
```typescript
// 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