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

@fezvrasta/envelop-sentry

v9.0.0

Published

This plugin collects errors and performance tracing for your execution flow, and reports it to [Sentry](https://sentry.io).

Downloads

249

Readme

@envelop/sentry

This plugin collects errors and performance tracing for your execution flow, and reports it to Sentry.

This is how it looks like in Sentry for error tracking:

Example Example

The operation name, document, variables are collected on errors, and the breadcrumbs that led to the error. You can also add any custom values that you need.

And for performance tracking:

Example Example

You can get information about each resolver (including field and type names), it's execution time and arguments. Also, in case of an error, the performance log and info are attached automatically to the reported Sentry error.

Getting Started

yarn add @sentry/node @sentry/tracing @envelop/sentry
  1. Start by creating an account and a project in https://sentry.io
  2. Follow the instructions to setup your Sentry instance in your application.
  3. Setup Sentry global instance configuration.
  4. Setup the Envelop plugin.

Usage Example

import { execute, parse, specifiedRules, subscribe, validate } from 'graphql'
import { envelop, useEngine } from '@envelop/core'
import { useSentry } from '@envelop/sentry'
// do this only once in you entry file.
import '@sentry/tracing'

const getEnveloped = envelop({
  plugins: [
    useEngine({ parse, validate, specifiedRules, execute, subscribe }),
    // ... other plugins ...
    useSentry({
      includeRawResult: false, // set to `true` in order to include the execution result in the metadata collected
      includeResolverArgs: false, // set to `true` in order to include the args passed to resolvers
      includeExecuteVariables: false, // set to `true` in order to include the operation variables values
      appendTags: args => {}, // if you wish to add custom "tags" to the Sentry transaction created per operation
      configureScope: (args, scope) => {}, // if you wish to modify the Sentry scope
      skip: executionArgs => {} // if you wish to modify the skip specific operations
    })
  ]
})

Configuration

  • startTransaction (default: true) - Starts a new transaction for every GraphQL Operation. When disabled, an already existing Transaction will be used.
  • renameTransaction (default: false) - Renames Transaction.
  • includeRawResult (default: false) - Adds result of each resolver and operation to Span's data (available under "result")
  • includeExecuteVariables (default: false) - Adds operation's variables to a Scope (only in case of errors)
  • appendTags - See example above. Allow you to manipulate the tags reports on the Sentry transaction.
  • configureScope - See example above. Allow you to manipulate the tags reports on the Sentry transaction.
  • transactionName (default: operation name) - Produces a name of Transaction (only when "renameTransaction" or "startTransaction" are enabled) and description of created Span.
  • traceparentData (default: {}) - Adds tracing data to be sent to Sentry - this includes traceId, parentId and more.
  • operationName - Produces a "op" (operation) of created Span.
  • skip (default: none) - Produces a "op" (operation) of created Span.
  • skipError (default: ignored GraphQLError) - Indicates whether or not to skip Sentry exception reporting for a given error. By default, this plugin skips all GraphQLError errors and does not report it to Sentry.
  • eventIdKey (default: 'sentryEventId') - The key in the error's extensions field used to expose the generated Sentry event id. Set to null to disable.