npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@funcmatic/lambda-router

v2.4.3

Published

A simple server-side URL router for AWS Lambda that does not depend on Node HTTP request/response.

Downloads

24

Readme

lambda-router

A lightweight Express-like HTTP request router for AWS Lambda functions triggered by API Gateway's Lambda Proxy Integration.

This might be helpful if ...

  • You use API Gateway's Lambda Proxy Integration.
  • Your Lambda function will execute different logic based on the AWS event's httpMethod and path parameters.
  • Your Lambda function will use the Node.js 8.10 runtime with new async-style handler.

If these conditions DO NOT apply to you then see the bottom of this README for some alternative routing solutions.

Key Features

  • Route handlers are invoked with the AWS event and context objects rather than HTTP request/response
  • Written for the new [Node.js 8.10 async-style handler]
  • Uses the path-to-regexp module to support similar route matching as Express (e.g. '/:foo/:bar+')

Getting Started

npm install @funcmatic/lambda-router
// function.js
'use strict'

const app = require('@funcmatic/lambda-router')

// define a route 
app.get('/user/:id', async ({ event, context }, params) => {
  var ret = { 'user': params.userid }
  return ret
})  

// This will be invoked by AWS Lambda and 
exports.handler = async (event, context) => {
  // You can pass any data into your route 
  var ctx = { event, context }  
  return await app.dispatch(ctx)
}

How to Use

Route methods

Route paths

Route parameters

Route handlers

Response methods

Running the tests

Most existing Javascript routers require an HTTP request/response object. Here an example of route using Express:

// Router handler in Expresss is passed in a Node HTTP request and response object
app.get('/', function (req, res) {
  res.send('hello world')
})

You can define the equivalent route handler using lambda-router by:

// lambda-router uses similar syntax but passes in the AWS event and context 
// objects instead of request/response
app.get('/', async function ({event, context}) {
  
  return {
    statusCode: 200,
    headers: {
     "Content-Type": "text/plain"
    },
    body: 'hello world'
  }
})

Alternative Routing Solutions

Why?

Micro server-side URL router that can be used with AWS Lambda (NodeJS) and has Express-like routing syntax. Written in vanilla javascript that natively runs in Node v8.10 and does not depend on any other external packages or modules.

Inspired and adapted from visionmedia/page.js — a simple express-like client-side router.

Test code