From 2d3f59cc65a55c30d6c64bc5b695b49be6a90ad6 Mon Sep 17 00:00:00 2001 From: Phil Kunz Date: Fri, 15 Nov 2019 21:44:11 +0100 Subject: [PATCH] fix(core): update --- package-lock.json | 26 ++++++++++---- package.json | 1 + ts/index.ts | 28 ++++----------- ts/smartpuppeteer.classes.smartpuppeteer.ts | 39 +++++++++++++++++++++ ts/smartpuppeteer.plugins.ts | 13 +++++++ 5 files changed, 78 insertions(+), 29 deletions(-) create mode 100644 ts/smartpuppeteer.classes.smartpuppeteer.ts create mode 100644 ts/smartpuppeteer.plugins.ts diff --git a/package-lock.json b/package-lock.json index 7e39215..0b5f2e2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -145,6 +145,17 @@ "@pushrocks/smartpromise": "^3.0.6" } }, + "@pushrocks/smartenv": { + "version": "4.0.8", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartenv/-/smartenv-4.0.8.tgz", + "integrity": "sha512-gKEL1/ogJwss2b/xjbOen5s+9geT5XUvNXuD1qUpc1t5P9w0BaXXuLw7vz1pVRxb/NWtmPLRIdVbAxL1OmmwCg==", + "requires": { + "@pushrocks/smartparam": "^1.0.4", + "@pushrocks/smartpromise": "^3.0.6", + "@types/node": "^12.12.7", + "is-wsl": "^2.1.1" + } + }, "@pushrocks/smartevent": { "version": "2.0.3", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartevent/-/smartevent-2.0.3.tgz", @@ -244,7 +255,6 @@ "version": "1.0.4", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartparam/-/smartparam-1.0.4.tgz", "integrity": "sha512-UAqhnTQGBaJRptTK3qTd47Yt2ZTrAWByteow4auSNZD+k0xrpY9mTPPgKh0IwsURe0cZhj7zYNpGiekhKkL4rA==", - "dev": true, "requires": { "@pushrocks/smartpromise": "^2.0.5", "is-promise": "^2.1.0", @@ -254,8 +264,7 @@ "@pushrocks/smartpromise": { "version": "2.0.5", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpromise/-/smartpromise-2.0.5.tgz", - "integrity": "sha512-9j/chLtIiNkR0MDw7Mpxg9slxAVvAQwUZuiaPYX5KpHdKxQaHLI1VZ8IN0vPhwlfgNO4i4vGXV0wB8BvSDj03g==", - "dev": true + "integrity": "sha512-9j/chLtIiNkR0MDw7Mpxg9slxAVvAQwUZuiaPYX5KpHdKxQaHLI1VZ8IN0vPhwlfgNO4i4vGXV0wB8BvSDj03g==" } } }, @@ -268,8 +277,7 @@ "@pushrocks/smartpromise": { "version": "3.0.6", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpromise/-/smartpromise-3.0.6.tgz", - "integrity": "sha512-vlQlBGNVIjfClgnsfgQBU6GIKcskYSFzEcKLt18ngPzPEcjKklXcxaqzLXpnoxR+KBh30QPE8255ncYHXuPPOg==", - "dev": true + "integrity": "sha512-vlQlBGNVIjfClgnsfgQBU6GIKcskYSFzEcKLt18ngPzPEcjKklXcxaqzLXpnoxR+KBh30QPE8255ncYHXuPPOg==" }, "@pushrocks/smartrequest": { "version": "1.1.42", @@ -999,8 +1007,7 @@ "is-promise": { "version": "2.1.0", "resolved": "https://verdaccio.lossless.one/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" }, "is-stream": { "version": "1.1.0", @@ -1008,6 +1015,11 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, + "is-wsl": { + "version": "2.1.1", + "resolved": "https://verdaccio.lossless.one/is-wsl/-/is-wsl-2.1.1.tgz", + "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==" + }, "isarray": { "version": "1.0.0", "resolved": "https://verdaccio.lossless.one/isarray/-/isarray-1.0.0.tgz", diff --git a/package.json b/package.json index 144ec57..b5d54a5 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "tslint-config-prettier": "^1.15.0" }, "dependencies": { + "@pushrocks/smartenv": "^4.0.8", "@types/puppeteer": "^1.20.2", "puppeteer": "^2.0.0" }, diff --git a/ts/index.ts b/ts/index.ts index 2ba0f49..8fddbe5 100644 --- a/ts/index.ts +++ b/ts/index.ts @@ -1,25 +1,9 @@ -import puppeteer from 'puppeteer'; +// module exports -export interface IEnvAwareOptions { - forceNoSandbox?: boolean; -} - -export const getEnvAwareBrowserInstance = async (optionsArg: IEnvAwareOptions = {}): Promise => { - const options: IEnvAwareOptions = { - ...{ - forceNoSandbox: false - }, - ...optionsArg - } - - let chromeArgs: string[] = []; - if (process.env.CI || options.forceNoSandbox) { - chromeArgs = chromeArgs.concat(['--no-sandbox', '--disable-setuid-sandbox']); - } - const headlessBrowser = await puppeteer.launch({ - args: chromeArgs - }); - return headlessBrowser; -}; +export * from './smartpuppeteer.classes.smartpuppeteer'; +// direct exports +import { puppeteer } from './smartpuppeteer.plugins'; export { puppeteer }; + + diff --git a/ts/smartpuppeteer.classes.smartpuppeteer.ts b/ts/smartpuppeteer.classes.smartpuppeteer.ts new file mode 100644 index 0000000..f71f547 --- /dev/null +++ b/ts/smartpuppeteer.classes.smartpuppeteer.ts @@ -0,0 +1,39 @@ +import * as plugins from './smartpuppeteer.plugins'; + +export interface IEnvAwareOptions { + forceNoSandbox?: boolean; +} + +export const getEnvAwareBrowserInstance = async ( + optionsArg: IEnvAwareOptions = {} +): Promise => { + const smartenv = new plugins.smartenv.Smartenv(); + const options: IEnvAwareOptions = { + ...{ + forceNoSandbox: false + }, + ...optionsArg + }; + + let chromeArgs: string[] = []; + if ((process.env.CI || options.forceNoSandbox) && !smartenv.isWsl) { + chromeArgs = chromeArgs.concat([ + '--no-sandbox', + '--disable-setuid-sandbox' + // '--disable-dev-shm-usage' + ]); + } + + let headlessBrowser: plugins.puppeteer.Browser; + if (!smartenv.isWsl) { + // lets get the actual instance + headlessBrowser = await plugins.puppeteer.launch({ + args: chromeArgs + }); + } else { + console.log('Detected WSL. Using chromium.'); + headlessBrowser = await plugins.puppeteer.launch({executablePath: '/usr/bin/chromium-browser'}); + } + + return headlessBrowser; +}; diff --git a/ts/smartpuppeteer.plugins.ts b/ts/smartpuppeteer.plugins.ts new file mode 100644 index 0000000..c6ca3bd --- /dev/null +++ b/ts/smartpuppeteer.plugins.ts @@ -0,0 +1,13 @@ +// @pushrocks scope +import * as smartenv from '@pushrocks/smartenv'; + +export { + smartenv +}; + +// third party scope +import puppeteer from 'puppeteer'; + +export { + puppeteer +} \ No newline at end of file