Socket
Book a DemoInstallSign in
Socket

@hatsy/router

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@hatsy/router

Hatsy router

latest
Source
npmnpm
Version
3.0.0
Version published
Maintainers
1
Created
Source

Hatsy Router

NPM Build Status Code Quality Coverage GitHub Project API Documentation

Routing

This module contains a Routing capability that extends request processing context with request routing means.

The latter has the following properties:

  • fullRoute original route.
  • route matching route. E.g. a tail section of original route.
  • routeMatch a successful match of the route(s) against the pattern(s).

The @hatsy/route-match library performs route parsing and matching.

Dispatch

Once Routing capability applied the request processing can be dispatched by matching route by one of the dispatchers.

dispatchByName()

import { httpListener } from '@hatsy/hatsy';
import { dispatchByName, Routing } from '@hatsy/router';
import { createServer } from 'http';

const server = createServer(
  httpListener(
    Routing.for(
      dispatchByName({
        api: apiHandler, // Handle API request under `/api` route
        assets: assetsHandler, // Serve static assets under `/assets` route
      }),
    ),
  ),
);

server.listen(8080);

dispatchByName() function accepts a map of request processing handlers under route entry names the handler should serve. The handler receives a request processing context with the rest of the route.

dispatchByPattern()

import { httpListener } from '@hatsy/hatsy';
import { dispatchByPattern, Routing } from '@hatsy/router';
import { createServer } from 'http';

const server = createServer(
  httpListener(
    Routing.for(
      dispatchByPattern([
        { on: 'api/v{apiVersion}/**', to: apiHandler },
        { on: '**/*.html', to: pageHandler },
        { on: 'assets/**', to: assetsHandler },
      ]),
    ),
  ),
);

server.listen(8080);

dispatchByPatttern() function accepts dispatch patterns containing a route pattern and handler that serves the matching route. The handler receives a request processing context with matching route tail.

Route Format

The route format is URLRoute by default, while route patterns parsed by simpleRoutePattern().

This can be changed by configuring Routing capability.

import { httpListener } from '@hatsy/hatsy';
import { matrixRoute, matrixRoutePattern } from '@hatsy/route-match';
import { dispatchByPattern, Routing } from '@hatsy/router';
import { createServer } from 'http';
import { matrixRoute } from './matrix-route';

const server = createServer(
  httpListener(
    Routing.with({
      buildRoute: ({ requestAddresses: { url } }) => matrixRoute(url),
      routePattern: pattern => matrixRoutePattern(pattern),
    }).for(
      dispatchByPattern([
        { on: 'api;v/**', to: apiHandler }, // API version as matrix attribute
        { on: '**/*.html', to: pageHandler },
        { on: 'assets/**', to: assetsHandler },
      ]),
    ),
  ),
);

server.listen(8080);

Keywords

http-middleware

FAQs

Package last updated on 17 Sep 2023

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