Skip to content

Commit

Permalink
Restore helper.promisify so puppeteer-web doesn't break
Browse files Browse the repository at this point in the history
We can reconsider this once browserify/browserify#1844 gets merged.
  • Loading branch information
mathiasbynens committed Oct 16, 2019
1 parent 112fd20 commit 38a2dea
Show file tree
Hide file tree
Showing 9 changed files with 63 additions and 29 deletions.
8 changes: 4 additions & 4 deletions experimental/puppeteer-firefox/lib/BrowserFetcher.js
Expand Up @@ -82,10 +82,10 @@ function downloadURL(product, platform, host, revision) {
return util.format(downloadURLs[product][platform], host, revision, archiveName(product, platform, revision));
}

const readdirAsync = util.promisify(fs.readdir.bind(fs));
const mkdirAsync = util.promisify(fs.mkdir.bind(fs));
const unlinkAsync = util.promisify(fs.unlink.bind(fs));
const chmodAsync = util.promisify(fs.chmod.bind(fs));
const readdirAsync = helper.promisify(fs.readdir.bind(fs));
const mkdirAsync = helper.promisify(fs.mkdir.bind(fs));
const unlinkAsync = helper.promisify(fs.unlink.bind(fs));
const chmodAsync = helper.promisify(fs.chmod.bind(fs));

function existsAsync(filePath) {
let fulfill = null;
Expand Down
3 changes: 1 addition & 2 deletions experimental/puppeteer-firefox/lib/Page.js
Expand Up @@ -4,7 +4,6 @@ const {Dialog} = require('./Dialog');
const {TimeoutError} = require('./Errors');
const fs = require('fs');
const mime = require('mime');
const util = require('util');
const EventEmitter = require('events');
const {createHandle} = require('./JSHandle');
const {Events} = require('./Events');
Expand All @@ -15,7 +14,7 @@ const {TimeoutSettings} = require('./TimeoutSettings');
const {NavigationWatchdog} = require('./NavigationWatchdog');
const {Accessibility} = require('./Accessibility');

const writeFileAsync = util.promisify(fs.writeFile);
const writeFileAsync = helper.promisify(fs.writeFile);

class Page extends EventEmitter {
/**
Expand Down
20 changes: 20 additions & 0 deletions experimental/puppeteer-firefox/lib/helper.js
Expand Up @@ -65,6 +65,26 @@ class Helper {
}
}

/**
* @param {function} nodeFunction
* @return {function}
*/
static promisify(nodeFunction) {
function promisified(...args) {
return new Promise((resolve, reject) => {
function callback(err, ...result) {
if (err)
return reject(err);
if (result.length === 1)
return resolve(result[0]);
return resolve(result);
}
nodeFunction.call(null, ...args, callback);
});
}
return promisified;
}

/**
* @param {!Object} obj
* @return {boolean}
Expand Down
10 changes: 5 additions & 5 deletions lib/BrowserFetcher.js
Expand Up @@ -20,7 +20,7 @@ const path = require('path');
const util = require('util');
const extract = require('extract-zip');
const URL = require('url');
const {assert} = require('./helper');
const {helper, assert} = require('./helper');
const removeRecursive = require('rimraf');
// @ts-ignore
const ProxyAgent = require('https-proxy-agent');
Expand Down Expand Up @@ -64,10 +64,10 @@ function downloadURL(platform, host, revision) {
return util.format(downloadURLs[platform], host, revision, archiveName(platform, revision));
}

const readdirAsync = util.promisify(fs.readdir.bind(fs));
const mkdirAsync = util.promisify(fs.mkdir.bind(fs));
const unlinkAsync = util.promisify(fs.unlink.bind(fs));
const chmodAsync = util.promisify(fs.chmod.bind(fs));
const readdirAsync = helper.promisify(fs.readdir.bind(fs));
const mkdirAsync = helper.promisify(fs.mkdir.bind(fs));
const unlinkAsync = helper.promisify(fs.unlink.bind(fs));
const chmodAsync = helper.promisify(fs.chmod.bind(fs));

function existsAsync(filePath) {
let fulfill = null;
Expand Down
3 changes: 1 addition & 2 deletions lib/DOMWorld.js
Expand Up @@ -15,11 +15,10 @@
*/

const fs = require('fs');
const util = require('util');
const {helper, assert} = require('./helper');
const {LifecycleWatcher} = require('./LifecycleWatcher');
const {TimeoutError} = require('./Errors');
const readFileAsync = util.promisify(fs.readFile);
const readFileAsync = helper.promisify(fs.readFile);

/**
* @unrestricted
Expand Down
5 changes: 2 additions & 3 deletions lib/Launcher.js
Expand Up @@ -15,7 +15,6 @@
*/
const os = require('os');
const path = require('path');
const util = require('util');
const http = require('http');
const https = require('https');
const URL = require('url');
Expand All @@ -31,8 +30,8 @@ const {TimeoutError} = require('./Errors');
const WebSocketTransport = require('./WebSocketTransport');
const PipeTransport = require('./PipeTransport');

const mkdtempAsync = util.promisify(fs.mkdtemp);
const removeFolderAsync = util.promisify(removeFolder);
const mkdtempAsync = helper.promisify(fs.mkdtemp);
const removeFolderAsync = helper.promisify(removeFolder);

const CHROME_PROFILE_PATH = path.join(os.tmpdir(), 'puppeteer_dev_profile-');

Expand Down
3 changes: 1 addition & 2 deletions lib/Page.js
Expand Up @@ -18,7 +18,6 @@ const fs = require('fs');
const path = require('path');
const EventEmitter = require('events');
const mime = require('mime');
const util = require('util');
const {Events} = require('./Events');
const {Connection} = require('./Connection');
const {Dialog} = require('./Dialog');
Expand All @@ -33,7 +32,7 @@ const {createJSHandle} = require('./JSHandle');
const {Accessibility} = require('./Accessibility');
const {TimeoutSettings} = require('./TimeoutSettings');

const writeFileAsync = util.promisify(fs.writeFile);
const writeFileAsync = helper.promisify(fs.writeFile);

class Page extends EventEmitter {
/**
Expand Down
29 changes: 24 additions & 5 deletions lib/helper.js
Expand Up @@ -16,11 +16,6 @@
const {TimeoutError} = require('./Errors');
const debugError = require('debug')(`puppeteer:error`);
const fs = require('fs');
const util = require('util');

const openAsync = util.promisify(fs.open);
const writeAsync = util.promisify(fs.write);
const closeAsync = util.promisify(fs.close);

class Helper {
/**
Expand Down Expand Up @@ -161,6 +156,26 @@ class Helper {
return typeof obj === 'number' || obj instanceof Number;
}

/**
* @param {function} nodeFunction
* @return {function}
*/
static promisify(nodeFunction) {
function promisified(...args) {
return new Promise((resolve, reject) => {
function callback(err, ...result) {
if (err)
return reject(err);
if (result.length === 1)
return resolve(result[0]);
return resolve(result);
}
nodeFunction.call(null, ...args, callback);
});
}
return promisified;
}

/**
* @param {!NodeJS.EventEmitter} emitter
* @param {(string|symbol)} eventName
Expand Down Expand Up @@ -255,6 +270,10 @@ class Helper {
}
}

const openAsync = Helper.promisify(fs.open);
const writeAsync = Helper.promisify(fs.write);
const closeAsync = Helper.promisify(fs.close);

/**
* @param {*} value
* @param {string=} message
Expand Down
11 changes: 5 additions & 6 deletions test/launcher.spec.js
Expand Up @@ -16,12 +16,11 @@
const fs = require('fs');
const os = require('os');
const path = require('path');
const util = require('util');

const rmAsync = util.promisify(require('rimraf'));
const mkdtempAsync = util.promisify(fs.mkdtemp);
const readFileAsync = util.promisify(fs.readFile);
const statAsync = util.promisify(fs.stat);
const {helper} = require('../lib/helper');
const rmAsync = helper.promisify(require('rimraf'));
const mkdtempAsync = helper.promisify(fs.mkdtemp);
const readFileAsync = helper.promisify(fs.readFile);
const statAsync = helper.promisify(fs.stat);
const TMP_FOLDER = path.join(os.tmpdir(), 'pptr_tmp_folder-');
const utils = require('./utils');

Expand Down

0 comments on commit 38a2dea

Please sign in to comment.