Skip to content

Econify/graphql-request-profiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

graphql-request-profiler

Status Checks

Easy to use GraphQL performance analysis utility for profiling resolver execution time. Observe resolver execution time in your API with a visualization tool.

Example

graphql-request-profiler -s examples/operation.graphql -e http://localhost:4000/graphql

Sample Visualizer

Installation

For CLI usage with API that has the plugin installed:

npm i -g @econify/graphql-request-profiler

Within a project:

npm install --save @econify/graphql-request-profiler
yarn add @econify/graphql-request-profiler

CLI Usage

$ graphql-request-profiler --help graphql-request-profiler: Visualize your GraphQL resolver execution time - Version 0.2.0 Usage: graphql-request-profiler --data <fileName> graphql-request-profiler --schema operation.graphql --endpoint=localhost:4000/graphql graphql-request-profiler --help Arguments: --schema, -s (file path) requesting schema file location --output, -o (file path) output request data to file location --endpoint, -e (string) the endpoint of the GraphQL server to request --variables, -v (file path) variables to pass to the GraphQL server --operationName, -n (string) optional, name of the operation to use in the schema --headerName, -h (string) optional, the name of the header to activate --data, -d (string) display an existing trace file --help (boolean) displays this help text 

graphql-http

import { createHandler } from 'graphql-http/lib/use/http'; import { createHttpHandlerProfilerPlugin } from '@econify/graphql-request-profiler'; const server = http.createServer((req, res) => { if (req.url?.startsWith('/graphql')) { createHandler( createHttpHandlerProfilerPlugin(req, { schema: buildSchema(), }) )(req, res); } else { res.writeHead(404).end(); } }); server.listen(4000); console.log('Listening to port 4000');

See full running example here See example of graphql-http with express

apollo-server

import { createApolloProfilerPlugin } from '@econify/graphql-request-profiler'; const server = new ApolloServer({ schema: buildSchema(), plugins: [createApolloProfilerPlugin()], }); server.listen().then(({ url }) => { console.log(`Listening on ${url}`); });

See full running example here

Deprecated

express-graphql

import { createExpressProfilerPlugin } from '@econify/graphql-request-profiler'; const app = express(); app.use( '/graphql', graphqlHTTP((req) => createExpressProfilerPlugin(req, { schema, graphiql: true, }) ) );

See full running example here

Custom Activation Header

If the server requires a different HTTP header to activate the plugin besides x-trace, a custom header name can be specified in the configuration to the plugin.

createApolloProfilerPlugin({ headerName: 'x-custom-header' }); createExpressProfilerPlugin(req, options, { headerName: 'x-custom-header' });

A custom plugin activation HTTP header may be specified when using the CLI tool.

graphql-request-profiler --headerName x-custom-header [...]

Like this package?

Check out Econify's other GraphQL package, graphql-rest-router, that allows routing to and caching an internal GraphQL API as a self-documenting REST API without exposing the schema!

About

Easy to use GraphQL performance analysis utility for tracing resolver execution time

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors