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

graphql-pino-middleware

v0.0.2

Published

GraphQL middleware to instrument resolvers with pino logger

Downloads

3,242

Readme

graphql-pino-middleware 🚀

GraphQL middleware to instrument resolvers with pino logger. This middleware intends to remove cross-cutting concerns from the application by providing logger in the resolver context.

Table of contents

Getting started

  1. Install the graphql-pino-middleware and graphql-middleware packages
yarn add graphql-pino-middleware
yarn add graphql-middleware
  1. Create the pino logger and configure the middleware with options
import pino from "pino";
import graphqlPinoMiddleware from "graphql-pino-middleware";

const logger = pino();

// create the graphql-pino-middleware
const loggerMiddleware = graphqlPinoMiddleware({
  logger
});
  1. Apply the middleware to the schema
import express from "express";
import graphqlExpressHttp from "express-graphql";
import { applyMiddleware } from "graphql-middleware";
import { makeExecutableSchema } from "graphql-tools";

// Construct a schema, using GraphQL schema language
const typeDefs = `
  type Query {
    hello(name: String): String
  }
`;

const resolvers = {
  Query: {
    hello: (parent, args, context) => {
      const result = `Hello ${args.name ? args.name : "world"}!`;
      // The logger is available in the context now
      context.logger.info({
        helloResolver: result
      });
      return result;
    }
  }
};

// apply the middleware to the schema
const schema = applyMiddleware(
  makeExecutableSchema({ typeDefs, resolvers }),
  loggerMiddleware
);

// Use the schema in your graphql server
const app = express();
app.use(
  "/graphql",
  graphqlExpressHttp({
    schema: schema,
    rootValue: resolvers,
    graphiql: true
  })
);

API

middleware = graphqlPinoMiddleware([options])

  • options
    • logger: An optional pino logger
    • hooks: Lost of PreResolve and PostResolve hooks

Refer the examples for more usage examples

Contributing

graphql-pino-middleware package intends to support contribution and support and thanks the open source community to making it better. Read below to learn how you can improve this repository and package

Code of Conduct

Please check the CODE OF CONDUCT which we have in place to ensure safe and supportive environment for contributors

Contributing

Feel free to create issues and bugs in the issues section using issues and bugs template. Please also ensure that there are not existing issues created on the same topic

Good first issues

Please check issues labeled #good-first-issues under the issues section

Licence

graphql-pino-middleware uses MIT Licence