1.0.6 • Published 7 months ago

@skyfe79/tiny-router v1.0.6

Weekly downloads
-
License
MIT
Repository
-
Last release
7 months ago

@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

1.0.6

7 months ago

1.0.5

7 months ago

1.0.4

7 months ago

1.0.3

7 months ago

1.0.2

7 months ago

1.0.1

7 months ago

1.0.0

7 months ago