# devtools-client

> Provides DevTools API for instrumentation of Node and Chromium Debugger (experimental)

Latest version **0.1.10** (published 2019-09-08) · MIT license · 0 weekly downloads

## Install

```sh
npm install devtools-client
pnpm add devtools-client
yarn add devtools-client
bun add devtools-client
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.10 |
| Published | 2019-09-08 |
| First published | 2019-08-31 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 13.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 4 |
| Author | joseph@lostsource.com |
| Maintainers | lostsource |
| Keywords | v8, inspect, devtools, chromium, nodejs |

## Links

- npm: https://www.npmjs.com/package/devtools-client
- Repository: https://github.com/lostsource/devtools-client
- Homepage: https://github.com/lostsource/devtools-client#readme
- Issues: https://github.com/lostsource/devtools-client/issues
- npm.io page: https://npm.io/package/devtools-client

## Dependencies (1)

- [ws](https://npm.io/package/ws.md) ^7.1.2

## Recent versions

- 0.1.10 (latest) — 2019-09-08
- 0.1.9 — 2019-09-05
- 0.1.8 — 2019-09-05
- 0.1.7 — 2019-09-05
- 0.1.6 — 2019-09-02
- 0.1.5 — 2019-09-02
- 0.1.4 — 2019-09-01
- 0.1.3 — 2019-09-01
- 0.1.2 — 2019-09-01
- 0.1.1 — 2019-09-01
- 0.1.0 — 2019-08-31

## README

# devtools-client

This module simplifies access to the [DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/) which can be used to control NodeJS, Chrome or Chromium.

If you're simply looking to control Chrome or Chromium I suggest using [Puppeteer](https://github.com/GoogleChrome/puppeteer) as it provides a simpler, higher level API.

### Installation
```
npm install devtools-client
```
### Usage
The module can launch a user specified NodeJS script or connect to an existent DevTools session.

#### Launch Node Script and attach to the Debugger
```
const DevToolsClient = require('devtools-client');
const Controller = new DevToolsClient();

Controller.launch('/path/to/some.js').then(({Debugger, Profiler, Runtime}) => {
  // resolves with an object containing all available DevTools domains
});
```
#### Connect to an existent Debugger session
1. Launch your Node script with the `--inspect`  argument
```
$ node --inspect some.js
Debugger listening on ws://127.0.0.1:9229/08f8c820-28e7-43b1-b6f6-c39f170e489d
For help, see: https://nodejs.org/en/docs/inspector
```
2. Set the `nodeWSEndpoint` property to the WebSocket URL 
```
const DevToolsClient = require('devtools-client');
const Controller = new DevToolsClient();

Controller.connect({
  nodeWSEndpoint: 'ws://127.0.0.1:9229/08f8c820-28e7-43b1-b6f6-c39f170e489d'	
}).then(({Debugger, Runtime, Profiler}) => {
  // resolves with an object containing all available DevTools domains
});
```
### Quick Example
Retrieve all script sources loaded
This example [enables](https://chromedevtools.github.io/devtools-protocol/v8/Debugger#method-enable) the Debugger domain and listens to [`scriptParsed`](https://chromedevtools.github.io/devtools-protocol/v8/Debugger#event-scriptParsed) events
```
const DevToolsClient = require('devtools-client');
const Controller = new DevToolsClient();

Controller.launch('/path/to/some.js').then(async ({Debugger}) => {
  Debugger.on('scriptParsed', ({scriptId, url}) => {
    console.log(url);  
  });
  Debugger.enable();
});
```

### Methods
Due to the asynchronous nature of the DevTools protocol, all methods return a [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).

### Events
Protocol events are emitted using the standard NodeJS [Event Emitter](https://nodejs.org/api/events.html).

---
_Source: https://npm.io/package/devtools-client · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
