45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
const EventEmitter = require('events');
|
||
|
const dns = require('dns');
|
||
|
|
||
|
const devtools = require('./lib/devtools.js');
|
||
|
const Chrome = require('./lib/chrome.js');
|
||
|
|
||
|
// XXX reset the default that has been changed in
|
||
|
// (https://github.com/nodejs/node/pull/39987) to prefer IPv4. since
|
||
|
// implementations alway bind on 127.0.0.1 this solution should be fairly safe
|
||
|
// (see #467)
|
||
|
if (dns.setDefaultResultOrder) {
|
||
|
dns.setDefaultResultOrder('ipv4first');
|
||
|
}
|
||
|
|
||
|
function CDP(options, callback) {
|
||
|
if (typeof options === 'function') {
|
||
|
callback = options;
|
||
|
options = undefined;
|
||
|
}
|
||
|
const notifier = new EventEmitter();
|
||
|
if (typeof callback === 'function') {
|
||
|
// allow to register the error callback later
|
||
|
process.nextTick(() => {
|
||
|
new Chrome(options, notifier);
|
||
|
});
|
||
|
return notifier.once('connect', callback);
|
||
|
} else {
|
||
|
return new Promise((fulfill, reject) => {
|
||
|
notifier.once('connect', fulfill);
|
||
|
notifier.once('error', reject);
|
||
|
new Chrome(options, notifier);
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = CDP;
|
||
|
module.exports.Protocol = devtools.Protocol;
|
||
|
module.exports.List = devtools.List;
|
||
|
module.exports.New = devtools.New;
|
||
|
module.exports.Activate = devtools.Activate;
|
||
|
module.exports.Close = devtools.Close;
|
||
|
module.exports.Version = devtools.Version;
|