🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

nodejs-inspector

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nodejs-inspector

inspector for Node.js

latest
Source
npmnpm
Version
1.0.1
Version published
Weekly downloads
16
-15.79%
Maintainers
1
Weekly downloads
 
Created
Source

Node.js inspector

Inspector for Node.js process & worker_threads

1. Inspector

Inspector is a wrapper for Node.js inspector module, but with promiseify API.

1.1 takeHeapSnapshot

const { Inspector } = require('nodejs-inspector');
const inspector = new Inspector();
inspector.start();
inspector.on('HeapProfiler.addHeapSnapshotChunk', (m) => {
    //
});
await inspector.post('HeapProfiler.takeHeapSnapshot');
inspector.stop();

1.2 CPU Profile

const { Inspector, util } = require('nodejs-inspector');
const inspector = new Inspector();
inspector.start();
await inspector.post('Profiler.enable');
await inspector.post('Profiler.setSamplingInterval', { interval: 1000 });
await inspector.post('Profiler.start');
await util.sleep(1000);
const { profile } = await inspector.post('Profiler.stop');
await inspector.post('Profiler.disable');
inspector.stop();

2. Thread Inspector

Thread Inspector is a Inspector communicate with the worker_thread.

2.1 takeHeapSnapshot

const { ThreadInspector } = require('nodejs-inspector');
const { Worker } = require('worker_threads');
const worker = new Worker('setInterval(() => {}, 10000)', { eval: true });
const inspector = new ThreadInspector();
inspector.on('attachedToWorker', async (sessionContext) => {
    const { sessionId } = sessionContext.getWorkerInfo();
    sessionContext.on('HeapProfiler.addHeapSnapshotChunk', (m) => {
        // 
    });
    await inspector.postToWorker(sessionId, { method: 'HeapProfiler.takeHeapSnapshot' });
    await inspector.stop();
    worker.terminate();
});
inspector.start();

2.2 CPU Profile

const { Worker } = require('worker_threads');
const { ThreadInspector, util } = require('nodejs-inspector');
const worker = new Worker('setInterval(() => {}, 10000)', { eval: true });
const inspector = new ThreadInspector();
inspector.on('attachedToWorker', async (sessionContext) => {
    const { sessionId } = sessionContext.getWorkerInfo();
    await inspector.postToWorker(sessionId, { method: 'Profiler.enable' });
    await inspector.postToWorker(sessionId, { 
        method: 'Profiler.setSamplingInterval', 
        params: { interval: 1000 }
    });
    await inspector.postToWorker(sessionId, { method: 'Profiler.start' });
    await util.sleep(1000);
    const { profile } = await inspector.postToWorker(sessionId, { method: 'Profiler.stop' });
    await inspector.postToWorker(sessionId, { method: 'Profiler.disable' });
    await inspector.stop();
    worker.terminate();
});
inspector.start();

3. API

3.1 Inspector

  • post(method, params) Communicate with Node.js by inspector protocol.
  • start Start the Inspector before using other API.
  • stop Stop the Inspector If it is no longer needed.

3.2 ThreadInspector

  • post(method, params) Communicate with Node.js by inspector protocol.
  • postToWorker(sessionId, message) Communicate with Node.js worker_threads by inspector protocol.
  • start Start the Inspector before using other API.
  • stop Stop the Inspector If it is no longer needed.
  • getSessions Get worker sessions.

See more informations in https://chromedevtools.github.io/devtools-protocol/v8/ .

FAQs

Package last updated on 07 Sep 2022

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