Skip to content

Commit

Permalink
chore(agnostification): common/helper.ts (#6515)
Browse files Browse the repository at this point in the history
* chore(agnostification): common/helper.ts

The `readProtocolStream` method uses `fs` only if you want to write to a
file. So we gate at the start of the function and ensure that if we got
given a path we are not in a Node environment.
  • Loading branch information
jackfranklin committed Oct 19, 2020
1 parent 637a1f7 commit c2c2bb7
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 5 deletions.
2 changes: 2 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ jobs:

- node_js: "12.16.3"
name: 'Browser tests: Linux/Chromium'
addons:
chrome: stable
env:
- CHROMIUM=true
script:
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@
"@types/ws": "^7.2.4",
"@typescript-eslint/eslint-plugin": "^4.4.0",
"@typescript-eslint/parser": "^4.4.0",
"@web/test-runner": "^0.8.4",
"@web/test-runner": "^0.9.2",
"commonmark": "^0.28.1",
"cross-env": "^7.0.2",
"dependency-cruiser": "^9.7.0",
Expand Down
17 changes: 13 additions & 4 deletions src/common/helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@
*/
import { TimeoutError } from './Errors.js';
import { debug } from './Debug.js';
import * as fs from 'fs';
import { CDPSession } from './Connection.js';
import { Protocol } from 'devtools-protocol';
import { CommonEventEmitter } from './EventEmitter.js';
import { assert } from './assert.js';
import { isNode } from '../environment.js';

export const debugError = debug('puppeteer:error');

Expand Down Expand Up @@ -309,9 +309,16 @@ async function readProtocolStream(
handle: string,
path?: string
): Promise<Buffer> {
if (!isNode && path) {
throw new Error('Cannot write to a path outside of Node.js environment.');
}

const fs = isNode ? await import('fs') : null;

let eof = false;
let fileHandle: fs.promises.FileHandle;
if (path) {
let fileHandle: import('fs').promises.FileHandle;

if (path && fs) {
fileHandle = await fs.promises.open(path, 'w');
}
const bufs = [];
Expand All @@ -323,7 +330,9 @@ async function readProtocolStream(
response.base64Encoded ? 'base64' : undefined
);
bufs.push(buf);
if (path) await fs.promises.writeFile(fileHandle, buf);
if (path && fs) {
await fs.promises.writeFile(fileHandle, buf);
}
}
if (path) await fileHandle.close();
await client.send('IO.close', { handle });
Expand Down

0 comments on commit c2c2bb7

Please sign in to comment.