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

@stickerbam/http-responses

v1.1.0

Published

Module to standarise Http Response objects across APIs

Downloads

2

Readme

http-responses

Description

This is an attempt to standarize microservices schemas and provide better CORS headers handling.

Disclaimer: A lot of tests cases to add.

Install

npm install @stickerbam/http-responses

Configuration

Create a file named .cors in the root directory of your project. This file must be deployed with your code.

Default origin regex: `.*'

{
  "allowedOriginsPattern": "a regex here to match authorized hosts"
}

Example:

{
  "allowedOriginsPattern": "(http(s)?:\/\/)?(([a-zA-Z0-9-]*)\\.)*(google\\.com)$"
}

Note: Use back-slash to escape invalid json charactes in your origin regex.

Using this module

  • Import module
const HttpResponse = require('@stickerbam/http-responses');
  • Create an instance of the imported module and pass optional, strongly but recommended, request headers object
const httpResponseCtrl = HttpResponse(reqHeaders)
  • Call response(statusCode, body, headers) method for every response object required. Where:

statusCode: <integer, valid HTTP response status code> body: <Object, if body is an instance of class Error then the error message is returned int he body> headers: <Optional, object containing case sensitive headers to override defaults>

const HttpResponse = require('@stickerbam/http-responses');

let reqHeaders = {'Origin': 'api.ddddd.com'};

let response = new HttpResponse(reqHeaders);

console.log(response.response(200))

Output:

{ statusCode: 200,
  headers: 
       { 'Access-Control-Allow-Origin': 'api.ddddd.com',
         'Access-Control-Max-Age': 86400,
         'Content-Type': 'application/json',
         Vary: 'Origin' },
  body: '{"data":[]}' }

Response Schema

{ statusCode: <Integer, a valid status code>,
  headers: <Object, object containing response headers>,
  body: <String, serialized response body>
}

Note: Serialize body will always be encapsulated in two mutually exclusive properties, data and message:

  • message: error message in the instance of Error class passed in the body argument
  • data: serialized data when no errors are passed

Response CORS

For this module to compute CORS headers, it must be passed the request Headers. The CORS headers will be generated based on the allowed origins that match the pattern in the .config file, in combination with the request headers.

Use cases:

  • when no request headers are passed to the response instance, CORS headers will allow all origins *.
  • when no config is used, and request headers are passed, CORS will allow Origin in the request headers
  • when config is used, and request headers are passed, CORS will allow Origin if it matches pattern, or will return empty