Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@bluealba/microservices-toolkit

Package Overview
Dependencies
Maintainers
0
Versions
35
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@bluealba/microservices-toolkit

Library that contains common elements used in microservices

  • 1.9.4
  • latest
  • npm
  • Socket score

Version published
Weekly downloads
86
decreased by-3.37%
Maintainers
0
Weekly downloads
 
Created
Source

Microservices Toolkit

Little library with a few "common" functionality that we use in our microservices.

Installation

npm i @bluealba/microservices-toolkit

Use Cases

Data

Pool

Pool is a wrapper on pg-pool that provides the possibility to query centralizing error handling using retries and mapping responses

Pool provides:

  • getPool: returns the pg-pool object for direct use.
  • query: queries the database with the given statement and parameters logging any possible error before rethrowing the exception.
  • recoverQuery: same as query but with retries (configured by maxQueryRetries).
  • mappedQuery: same as recoverQuery but adding a mapping parameter that is used to map each value of the result set.

Code example

In order to create a connection pool you should use the following code.

const config = ...;
const toolkit = require("@bluealba/microservices-toolkit");

const pgPool = toolkit.buildPGClient(config);

We use the config object to configure the pool expecting the following attributes.

  {
    host: config.host,
    database: config.dbName,
    user: config.user,
    password: config.password,
    port: config.port,
    max: config.maxPoolSize,
    idleTimeoutMillis: config.idleTimeout,
    connectionTimeoutMillis: config.dbTimeout,
    maxUses: config.maxUses,
  }

Also, the configuration should have the following value to specify the amount of retries

maxQueryRetries  

Error

graphqlCustomErrorFn

Is a custom error handler for graphql that allows the user to provide errors with extensions that

Configure the custom error handling using:

const toolkit = require("@bluealba/microservices-toolkit");

const graphqlCustomErrorFn = toolkit.graphqlCustomErrorFn;

app.use(
  "/graphql",
  graphqlHTTP({
    schema,
    pretty: true,
    graphiql: true,
    customFormatErrorFn: graphqlCustomErrorFn(),
  })
);

Errors should be created adding an extension field like in this example:

class StatusCodeError extends Error {

  constructor(statusCode, errorCode, message) {
    super(message);
    this.extensions = { errorCode: errorCode, statusCode: statusCode, message: message };
  }

}

Middelware

errorHandler

Simple error handler for express that catches any loose error and turns it into a well-formed JSON error with a 500 status code.


const toolkit = require("@bluealba/microservices-toolkit");

const errorHandler =  toolkit.errorHandler;
app.use(errorHandler(logger));
gatewayAuth

Filter that adds an auth object to the request using the x-forwarded-user-* headers added by the proxy this object provides:

  • username:
  • displayName:
  • operations:
  • can: method that check if the user has the given operation
  • matchesLoggedUser: checks if the parameter is the username

Code example


const toolkit = require("@bluealba/microservices-toolkit");

const gatewayAuth =  toolkit.gatewayAuth; 
app.use(gatewayAuth());
getAuthHeaders

const toolkit = require("@bluealba/microservices-toolkit");
const getAuthHeaders = toolkit.getAuthHeaders;

const authHeaders = getAuthHeaders(req);

Performance

run

wraps any give call with a method that logs the time the method takes to run when called


const toolkit = require("@bluealba/microservices-toolkit");
const run = toolkit.run;

module.exports = run(getSegments, "getSegments");

SQL

Util class that provides methods to generate sql parts.

  • formatDate,
  • escapeQuotes,
  • wrapInQuotes,
  • wrapInDoublesQuotes,
  • generateAnyClause,
  • generateInClause,

Code example


const toolkit = require("@bluealba/microservices-toolkit");
const { generateAnyClause } = toolkit.sqlUtils;

Keywords

FAQs

Package last updated on 06 Nov 2024

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc