graphql-lightstep-middleware
![NPM](https://nodei.co/npm/graphql-lightstep-middleware.png)
GraphQL middleware to instrument resolvers with opentracing traces for lightstep collector
![version](https://img.shields.io/npm/v/graphql-lightstep-middleware.svg)
Table of contents
Getting started
- Install the package and graphql-middleware
yarn add graphql-lightstep-middleware
yarn add graphql-middleware
- Create the lightstep global tracer
import { initGlobalTracer } from "opentracing";
import { Tracer as LightstepTracer } from "lightstep-tracer";
initGlobalTracer(new LightstepTracer({
access_token: "developer",
component_name: "graphql-lightstep-middleware",
collector_host: "localhost",
collector_port: 8360,
plaintext: true,
collector_encryption: "none"
} as any));
- Configure the middleware
import graphqlLightstepMiddleware from "graphql-lightstep-middleware";
const lightstepMiddleware = graphqlLightstepMiddleware({
tracer: globalTracer()
});
- 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";
const typeDefs = `
type Query {
hello(name: String): String
}
`;
const resolvers = {
Query: {
hello: (parent, args, context) => {
const result = `Hello ${args.name ? args.name : "world"}!`;
context.tracing.rootSpan.addTags({
helloResolver: result
});
return result;
}
}
};
const schema = applyMiddleware(
makeExecutableSchema({ typeDefs, resolvers }),
lightstepMiddleware
);
const app = express();
app.use(
"/graphql",
graphqlExpressHttp({
schema: schema,
rootValue: resolvers,
graphiql: true
})
);
API
middleware = graphqlLightstepMiddleware([options])
options
tracer
: An optional lightstep
tracer objecthooks
: Lost of PreResolve
and PostResolve
hooks
Refer the examples for more usage examples
Contributing
graphql-lightstep-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-lightstep-middleware
uses MIT License