diff --git a/.gitignore b/.gitignore index 91c0db0..ef13c79 100644 --- a/.gitignore +++ b/.gitignore @@ -15,8 +15,6 @@ node_modules/ # builds dist/ -dist_web/ -dist_serve/ -dist_ts_web/ +dist_*/ # custom \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b14b4ac..9a4467e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -19,22 +19,35 @@ mirror: stage: security script: - npmci git mirror + only: + - tags tags: - lossless - docker - notpriv -snyk: +auditProductionDependencies: + image: registry.gitlab.com/hosttoday/ht-docker-node:npmci stage: security script: - npmci npm prepare - - npmci command npm install -g snyk - - npmci command npm install --ignore-scripts - - npmci command snyk test + - npmci command npm install --production --ignore-scripts + - npmci command npm config set registry https://registry.npmjs.org + - npmci command npm audit --audit-level=high --only=prod --production tags: - - lossless - docker - - notpriv + +auditDevDependencies: + image: registry.gitlab.com/hosttoday/ht-docker-node:npmci + stage: security + script: + - npmci npm prepare + - npmci command npm install --ignore-scripts + - npmci command npm config set registry https://registry.npmjs.org + - npmci command npm audit --audit-level=high --only=dev + tags: + - docker + allow_failure: true # ==================== # test stage @@ -49,9 +62,7 @@ testStable: - npmci npm test coverage: /\d+.?\d+?\%\s*coverage/ tags: - - lossless - docker - - priv testBuild: stage: test @@ -62,9 +73,7 @@ testBuild: - npmci command npm run build coverage: /\d+.?\d+?\%\s*coverage/ tags: - - lossless - docker - - notpriv release: stage: release @@ -84,6 +93,8 @@ release: codequality: stage: metadata allow_failure: true + only: + - tags script: - npmci command npm install -g tslint typescript - npmci npm prepare diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..112db52 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,29 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "current file", + "type": "node", + "request": "launch", + "args": [ + "${relativeFile}" + ], + "runtimeArgs": ["-r", "@gitzone/tsrun"], + "cwd": "${workspaceRoot}", + "protocol": "inspector", + "internalConsoleOptions": "openOnSessionStart" + }, + { + "name": "test.ts", + "type": "node", + "request": "launch", + "args": [ + "test/test.ts" + ], + "runtimeArgs": ["-r", "@gitzone/tsrun"], + "cwd": "${workspaceRoot}", + "protocol": "inspector", + "internalConsoleOptions": "openOnSessionStart" + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..3648eaa --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,26 @@ +{ + "json.schemas": [ + { + "fileMatch": ["/npmextra.json"], + "schema": { + "type": "object", + "properties": { + "npmci": { + "type": "object", + "description": "settings for npmci" + }, + "gitzone": { + "type": "object", + "description": "settings for gitzone", + "properties": { + "projectType": { + "type": "string", + "enum": ["website", "element", "service", "npm", "wcc"] + } + } + } + } + } + } + ] +} diff --git a/package.json b/package.json index d814338..cdd2fb8 100644 --- a/package.json +++ b/package.json @@ -3,8 +3,8 @@ "version": "1.0.16", "private": false, "description": "simplified access to puppeteer", - "main": "dist/index.js", - "typings": "dist/index.d.ts", + "main": "dist_ts/index.js", + "typings": "dist_ts/index.d.ts", "author": "Lossless GmbH", "license": "MIT", "scripts": { @@ -30,11 +30,15 @@ "ts/**/*", "ts_web/**/*", "dist/**/*", - "dist_web/**/*", + "dist_*/**/*", + "dist_ts/**/*", "dist_ts_web/**/*", "assets/**/*", "cli.js", "npmextra.json", "readme.md" + ], + "browserslist": [ + "last 1 chrome versions" ] -} +} \ No newline at end of file diff --git a/readme.md b/readme.md index edb48a1..c518358 100644 --- a/readme.md +++ b/readme.md @@ -8,13 +8,20 @@ simplified access to puppeteer * [docs (typedoc)](https://pushrocks.gitlab.io/smartpuppeteer/) ## Status for master -[![build status](https://gitlab.com/pushrocks/smartpuppeteer/badges/master/build.svg)](https://gitlab.com/pushrocks/smartpuppeteer/commits/master) -[![coverage report](https://gitlab.com/pushrocks/smartpuppeteer/badges/master/coverage.svg)](https://gitlab.com/pushrocks/smartpuppeteer/commits/master) -[![npm downloads per month](https://img.shields.io/npm/dm/@pushrocks/smartpuppeteer.svg)](https://www.npmjs.com/package/@pushrocks/smartpuppeteer) -[![Known Vulnerabilities](https://snyk.io/test/npm/@pushrocks/smartpuppeteer/badge.svg)](https://snyk.io/test/npm/@pushrocks/smartpuppeteer) -[![TypeScript](https://img.shields.io/badge/TypeScript->=%203.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/) -[![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/) -[![JavaScript Style Guide](https://img.shields.io/badge/code%20style-prettier-ff69b4.svg)](https://prettier.io/) + +Status Category | Status Badge +-- | -- +GitLab Pipelines | [![pipeline status](https://gitlab.com/pushrocks/smartpuppeteer/badges/master/pipeline.svg)](https://lossless.cloud) +GitLab Pipline Test Coverage | [![coverage report](https://gitlab.com/pushrocks/smartpuppeteer/badges/master/coverage.svg)](https://lossless.cloud) +npm | [![npm downloads per month](https://badgen.net/npm/dy/@pushrocks/smartpuppeteer)](https://lossless.cloud) +Snyk | [![Known Vulnerabilities](https://badgen.net/snyk/pushrocks/smartpuppeteer)](https://lossless.cloud) +TypeScript Support | [![TypeScript](https://badgen.net/badge/TypeScript/>=%203.x/blue?icon=typescript)](https://lossless.cloud) +node Support | [![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/) +Code Style | [![Code Style](https://badgen.net/badge/style/prettier/purple)](https://lossless.cloud) +PackagePhobia (total standalone install weight) | [![PackagePhobia](https://badgen.net/packagephobia/install/@pushrocks/smartpuppeteer)](https://lossless.cloud) +PackagePhobia (package size on registry) | [![PackagePhobia](https://badgen.net/packagephobia/publish/@pushrocks/smartpuppeteer)](https://lossless.cloud) +BundlePhobia (total size when bundled) | [![BundlePhobia](https://badgen.net/bundlephobia/minzip/@pushrocks/smartpuppeteer)](https://lossless.cloud) +Platform support | [![Supports Windows 10](https://badgen.net/badge/supports%20Windows%2010/yes/green?icon=windows)](https://lossless.cloud) [![Supports Mac OS X](https://badgen.net/badge/supports%20Mac%20OS%20X/yes/green?icon=apple)](https://lossless.cloud) ## Usage @@ -22,7 +29,7 @@ Use TypeScript for best in class intellisense. ```typescript const headlessBrowser = await smartpuppeteer.getEnvAwareBrowserInstance({ - forceNoSandbox: true // if you really want no sandbox, you can do this. Otherwise its starting things as necessary + forceNoSandbox: true, // if you really want no sandbox, you can do this. Otherwise its starting things as necessary }); await headlessBrowser.close(); ``` diff --git a/test/test.ts b/test/test.ts index 2caecd1..24dbf2e 100644 --- a/test/test.ts +++ b/test/test.ts @@ -1,9 +1,9 @@ import { expect, tap } from '@pushrocks/tapbundle'; import * as smartpuppeteer from '../ts/index'; -tap.test('first test', async tools => { +tap.test('first test', async (tools) => { const headlessBrowser = await smartpuppeteer.getEnvAwareBrowserInstance({ - forceNoSandbox: true + forceNoSandbox: true, }); await headlessBrowser.close(); }); diff --git a/ts/smartpuppeteer.classes.incognitobrowser.ts b/ts/smartpuppeteer.classes.incognitobrowser.ts index 5d9e30e..bb2b58d 100644 --- a/ts/smartpuppeteer.classes.incognitobrowser.ts +++ b/ts/smartpuppeteer.classes.incognitobrowser.ts @@ -5,9 +5,7 @@ export class IncognitoBrowser { public status: 'started' | 'stopped' = 'stopped'; public browser: plugins.puppeteer.Browser; - constructor() { - - } + constructor() {} /** * starts the IncognitoBrowser @@ -15,14 +13,14 @@ export class IncognitoBrowser { public async start() { this.status = 'started'; this.browser = await getEnvAwareBrowserInstance(); - this.browser.addListener('disconnected', async eventArg => { + this.browser.addListener('disconnected', async (eventArg) => { try { this.browser.removeAllListeners(); - } catch(err) {} + } catch (err) {} if (this.status === 'started') { this.browser = await getEnvAwareBrowserInstance(); } - }) + }); } /** @@ -39,4 +37,4 @@ export class IncognitoBrowser { throw new Error('you need to start the IncognitoBrowser instance first'); } } -} \ No newline at end of file +} diff --git a/ts/smartpuppeteer.classes.smartpuppeteer.ts b/ts/smartpuppeteer.classes.smartpuppeteer.ts index 30e0038..6c0bbf4 100644 --- a/ts/smartpuppeteer.classes.smartpuppeteer.ts +++ b/ts/smartpuppeteer.classes.smartpuppeteer.ts @@ -10,13 +10,13 @@ export const getEnvAwareBrowserInstance = async ( const smartenv = new plugins.smartenv.Smartenv(); const options: IEnvAwareOptions = { ...{ - forceNoSandbox: false + forceNoSandbox: false, }, - ...optionsArg + ...optionsArg, }; let chromeArgs: string[] = []; - if ((process.env.CI || options.forceNoSandbox || plugins.os.userInfo().username === 'root')) { + if (process.env.CI || options.forceNoSandbox || plugins.os.userInfo().username === 'root') { chromeArgs = chromeArgs.concat(['--no-sandbox', '--disable-setuid-sandbox']); } @@ -24,7 +24,7 @@ export const getEnvAwareBrowserInstance = async ( console.log('launching puppeteer bundled chrome with arguments:'); console.log(chromeArgs); headlessBrowser = await plugins.puppeteer.launch({ - args: chromeArgs + args: chromeArgs, }); return headlessBrowser; diff --git a/ts/smartpuppeteer.plugins.ts b/ts/smartpuppeteer.plugins.ts index dd4fc59..9cdc02a 100644 --- a/ts/smartpuppeteer.plugins.ts +++ b/ts/smartpuppeteer.plugins.ts @@ -1,9 +1,7 @@ // node native scope import * as os from 'os'; -export { - os -}; +export { os }; // @pushrocks scope import * as smartdelay from '@pushrocks/smartdelay';