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

youch

v3.3.3

Published

HTML Pretty error stack viewer

Downloads

2,553,887

Readme

Youch!

Pretty error reporting for Node.js :rocket:


NPM Version Tests Downloads Stats

Youch is inspired by Whoops but with a modern design. Reading stack trace of the console slows you down from active development. Instead Youch print those errors in structured HTML to the browser.

Features

  1. HTML reporter
  2. JSON reporter, if request accepts a json instead of text/html.
  3. Sorted frames of error stack.
  4. Support for ESM.

Checkout youch terminal to beautify errors on terminal.

Installation

npm i --save youch

Basic Usage

Youch is used by AdonisJs, but it can be used by express or raw HTTP server as well.

const Youch = require('youch')
const http = require('http')

http.createServer(async function (req, res) {

  // PERFORM SOME ACTION
  if (error) {
    const youch = new Youch(error, req)
    const html = await youch.toHTML()

    res.writeHead(200, {'content-type': 'text/html'})
    res.write(html)
    res.end()
  }

}).listen(8000)

Adding helpful links

Everytime an error occurs, we can help users we letting search for the error on Google, over even on the Github repo of our project.

Youch let you define clickable links to redirect the user to a website with the error message.

const youch = new Youch(error)

await youch
  .addLink(({ message }) => {
    const url = `https://stackoverflow.com/search?q=${encodeURIComponent(`[adonis.js] ${message}`)}`
    
    return `<a href="${url}" target="_blank" title="Search on stackoverflow">Search stackoverflow</a>`
  })
  .toHTML()

Also you can make use of Font awesome brands icons to display icons.

If you will use fontawesome icons, then Youch will automatically load the CSS files from the font awesome CDN for you.

const youch = new Youch(error)

await youch
  .addLink(({ message }) => {
    const url = `https://stackoverflow.com/search?q=${encodeURIComponent(`[adonis.js] ${message}`)}`
    return `<a href="${url}" target="_blank" title="Search on stackoverflow"><i class="fab fa-stack-overflow"></i></a>`
  })
  .toHTML()

Toggle show all frames checkbox

When rendering HTML you can call the toggleShowAllFrames method to check/uncheck the show all frames checkbox.

By default, the checkbox is not checked and calling this method once will toggle the state.

const youch = new Youch(error)

await youch
  .toggleShowAllFrames()
  .toHTML()

Adding CSP nonce

Youch HTML output outputs inline style and script tags and therefore you will have add nonce attribute to them when you have enabled CSP on your website.

You can pass the cspNonce property to the toHTML method at the time of rendering the error to an HTML output.

const youch = new Youch(error, req)
const html = await youch.toHTML({
  cspNonce: 'nonce-value'
})

Get stack as JSON

You can also the error stack frames as JSON by calling the .toJSON method.

const youch = new Youch(error, {})
const jsonResponse = await youch.toJSON()

Following is the shape of the toJSON return data type.

type JsonResponse = {
  error: {
    message: string;
    name: string;
    status: number;
    frames: {
      file: string,
      filePath: string,
      line: number,
      column: number,
      callee: string,
      calleeShort: string,
      context: {
        start: number,
        pre: string,
        line: string,
        post: string,
      },
      isModule: boolean,
      isNative: boolean,
      isApp: boolean
    }[];
  };
}

Release History

Checkout CHANGELOG.md file for release history.

Meta

Checkout LICENSE.md for license information Harminder Virk (Aman) - https://github.com/thetutlage