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

xdebugger

v1.0.3

Published

A very lightweight class for create a production debugger with a custom errors with a human readable table format, temp logger and search methods with dynamics filters.

Downloads

19

Readme

XDebugger

A very lightweight library to create a production debugger with custom errors readable for humans. Includes errors in table format, logger and search methods with dynamic filters.

size-repo license version quality issues

This library with zero dependencies was designed for debug/capture errors in development or production environment and obtain errors in background, with a readable format for any developer, also can disable console logs any time.

  1. Demos
  2. Installation
  3. How to use

Demos

Installation

npm installation:

npm i xdebugger

Or without npm:

<!-- In development environment -->
<script src="xdebugger.js"></script>

<!-- In production environment -->
<script src="xdebugger.min.js" async></script>

How to use

Use XDebugger is really easy and very flexible, it's possible define debug, log, datatypes, action, default and max variables for different logs requirements.

Can use for debug development or in production website. Also if you want for example can load debug parameters via API, like { debug: true, log: false } and obtain errors or custom logs if you set.

In case use npm:

import XDebugger from 'xdebugger';

Basic initialization

// In development environment
const debug = new XDebugger({ debug: true, log: true });

// In production environment
const debug = new XDebugger({ debug: true });

Set { log: false } disable completely console. That's mean XDebugger, clean console for not show any log, info, warn, table and error. If try log anything console show:

  Console was cleared
> console.log("Try write something like this");
"Developer mode is disabled."

How log

You can log any data you want, also XDebugger add by default time as String and timestamp format as Number.

// Obviously you need initialize before!!
// Example log =>

debug.log({
  message: `${value} is not a valid data type`,
  code: 150,
  explanation: `The variable was evaluated and is not valid, typeof ${value}: ${typeof value}.`,
  response: `Change to ${this._datatypes.toString()} data type.`,
  error: `Value expect a ${this._datatypes.toString()} and recieve ${typeof value}`,
})

How to listen errors

window.onerror = (message, url, line, col, err) => debug.log(debug.onerror(message, url, line, col, err));

How to get logs

debug.logged

// Output =>
> [{..}]

How to search / filter logs

Search was based in MongoDB queries for filter. XDebugger have 6 types of filters:

  • $eq: Match value of log key with query value key
  • $cnt: Contains value of log key with query value key
  • $lte: Less or equal value of log key with query value key
  • $gte: More or equal value of log key with query value key
  • $lt: Less value of log key with query value key
  • $gt: More value of log key with query value key

$eq search

// Implicit search
debug.search({
  timestamp: 1556528447311,
  code: 105
});

// Explicit search
debug.search({
  timestamp: {
    $eq: 1556528447311
  },
  code: 401
});

$cnt search

debug.search({
  error: {
    $cnt: "filter"
  },
  internalCode: 9224
});

$lte search

debug.search({
  timestamp: {
    $lte: 1556528447311
  },
  code: 105
});

$lt search

debug.search({
  timestamp: {
    $lt: 1556528447311
  },
  browser: "Google Chrome"
});

$gte search

debug.search({
  timestamp: {
    $gte: 1556528447311
  },
  version: 12.1
});

$gt search

debug.search({
  timestamp: {
    $gt: 1556528447311
  },
  name: "John Doe",
  idUser: "507f191e810c19729de860ea"
});

How set and send log per log to a API

const debug = new Debugger({ debug: true, action: (log) => {
    // Here your code to POST log
  } 
});

How export and download logs

You can export all logs and download in a JSON file.

debug.export();

Also can export filtered logs as follow:

debug.export(debug.search({
  code: 105,
  browser: "Brave"
}));

How console logs in readable format

The view function accept Array or Object, that mean one or more logs.

debug.view(debug.logged);

How to clean debugger

This clean logger and console.

debug.clean();

How set default data

default key in object initialization parameter allow set default data like browser, version, internalCode, etc.

// 'library' as third party source functionality

const debug = new XDebugger({ debug: true, default: {
  browser: library.browser.name,
  version: library.browser.version,
  language: library.browser.lang,
  ...
}});

Also you can rewrite default time and timestamp:

const debug = new XDebugger({ debug: true, default: {
  time: mycustomtime.toString(),
  timestamp: mycustomtime.getTime(),
}});

How set max records and size of values log

  • length: set the max records logger can save
  • size: set the max size value of log allowed in MB, Ex: { key: "value value value value value value value " } => 80 Bytes
const debug = new XDebugger({ debug: true, default: {
  max: {
    length: 60,
    size: 100
  }
}});

datatypes Not tested yet!!

Define allowed data type of log value.

Not tested with functions or other data type.

By default it allow number, string, object.

Try not use complex schema with console.table, that lose the readable format