Launch Week Day 1: Socket for Jira Is Now Available.Learn More
Socket
Book a DemoSign in
Socket

dbgr

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dbgr

Lightweight debugger for Node.js

latest
Source
npmnpm
Version
1.0.0
Version published
Weekly downloads
14
40%
Maintainers
1
Weekly downloads
 
Created
Source

dbgr

dbgr is a lightweight debugger function that pauses your script, and watches the current file for any changes and only re-runs the specific code that's passed in to it.

If you like this project, please star it & follow me to see what other cool projects I'm working on! ❤️

🙋‍♂️ Why?

You can set breakpoints in Node.js via debugger statements, but it could be a hassle to set up and can really slow down your script.

When you're debugging something heavy with slow-startup (eg. server, headless Chrome, etc), you want to use something simple & light to debug.

🚀 Install

npm i -D dbgr

🚦 Quick Setup

import dbgr from 'dbgr'

// Some async process
(async () => {

    // ...

    await dbgr((resume) => {
        console.log('The debugger has started');

        // Write code here and hit save to
        // automatically re-run this function

        // Call resume() and save to resume the debugger

        // ↓ The eval below is necessary for this to work
    }, _ => eval(_))
})();

🙋‍♀️ FAQ

How does it work?

Upon invoking dbgr, it detects the file path of the caller by using V8 stack trace API via callsites. It then watches the file for changes using fs.watch. When a change is detected, it parses the source code using acorn to extract the specific function passed into dbgr. It then passes it into the _ => eval(_) to run in the original context.

Does it work in TypeScript files?

Yes. While the AST parser acorn is designed for ES parsing, TS files can be loosely parsed via acorn-loose, and the content inside the dbgr hook has the types stripped via esbuild for it to be "safely" eval()'d by the JavaScript runtime.

Keywords

debugger

FAQs

Package last updated on 18 Apr 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts