diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8ebc8b5..88889cf 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -19,23 +19,36 @@ mirror: stage: security script: - npmci git mirror + only: + - tags tags: - lossless - docker - notpriv -audit: +auditProductionDependencies: + image: registry.gitlab.com/hosttoday/ht-docker-node:npmci + stage: security + script: + - npmci npm prepare + - 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: + - docker + allow_failure: true + +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 + - npmci command npm audit --audit-level=high --only=dev tags: - - lossless - docker - - notpriv + allow_failure: true # ==================== # test stage @@ -50,9 +63,7 @@ testStable: - npmci npm test coverage: /\d+.?\d+?\%\s*coverage/ tags: - - lossless - docker - - priv testBuild: stage: test @@ -63,9 +74,7 @@ testBuild: - npmci command npm run build coverage: /\d+.?\d+?\%\s*coverage/ tags: - - lossless - docker - - notpriv release: stage: release @@ -85,6 +94,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/settings.json b/.vscode/settings.json index 01d2b8d..3648eaa 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -15,7 +15,7 @@ "properties": { "projectType": { "type": "string", - "enum": ["website", "element", "service", "npm"] + "enum": ["website", "element", "service", "npm", "wcc"] } } } diff --git a/package.json b/package.json index b9b5df5..9f9e6c7 100644 --- a/package.json +++ b/package.json @@ -43,5 +43,8 @@ "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 f646386..3c99c06 100644 --- a/readme.md +++ b/readme.md @@ -8,13 +8,20 @@ timeouts for the async/await era, written in TypeScript * [docs (typedoc)](https://pushrocks.gitlab.io/smartdelay/) ## Status for master -[![pipeline status](https://gitlab.com/pushrocks/smartdelay/badges/master/pipeline.svg)](https://gitlab.com/pushrocks/smartdelay/commits/master) -[![coverage report](https://gitlab.com/pushrocks/smartdelay/badges/master/coverage.svg)](https://gitlab.com/pushrocks/smartdelay/commits/master) -[![npm downloads per month](https://img.shields.io/npm/dm/@pushrocks/smartdelay.svg)](https://www.npmjs.com/package/@pushrocks/smartdelay) -[![Known Vulnerabilities](https://snyk.io/test/npm/@pushrocks/smartdelay/badge.svg)](https://snyk.io/test/npm/@pushrocks/smartdelay) -[![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/smartdelay/badges/master/pipeline.svg)](https://lossless.cloud) +GitLab Pipline Test Coverage | [![coverage report](https://gitlab.com/pushrocks/smartdelay/badges/master/coverage.svg)](https://lossless.cloud) +npm | [![npm downloads per month](https://badgen.net/npm/dy/@pushrocks/smartdelay)](https://lossless.cloud) +Snyk | [![Known Vulnerabilities](https://badgen.net/snyk/pushrocks/smartdelay)](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/smartdelay)](https://lossless.cloud) +PackagePhobia (package size on registry) | [![PackagePhobia](https://badgen.net/packagephobia/publish/@pushrocks/smartdelay)](https://lossless.cloud) +BundlePhobia (total size when bundled) | [![BundlePhobia](https://badgen.net/bundlephobia/minzip/@pushrocks/smartdelay)](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 diff --git a/test/test.ts b/test/test.ts index b191077..a8c2467 100644 --- a/test/test.ts +++ b/test/test.ts @@ -2,7 +2,7 @@ import { expect, tap } from '@pushrocks/tapbundle'; import * as smartdelay from '../ts/index'; -tap.test('.delayFor should delay async', async tools => { +tap.test('.delayFor should delay async', async (tools) => { tools.timeout(5000); let timePassed = false; setTimeout(() => { @@ -14,7 +14,7 @@ tap.test('.delayFor should delay async', async tools => { }); }); -tap.test('.delayForRandom should delay async for a random time period', async tools => { +tap.test('.delayForRandom should delay async for a random time period', async (tools) => { let timePassedBefore = false; let timePassedAfter = false; setTimeout(() => { @@ -28,14 +28,14 @@ tap.test('.delayForRandom should delay async for a random time period', async to expect(timePassedAfter).to.be.false; }); -tap.test('.delayFor should pass on a type', async tools => { +tap.test('.delayFor should pass on a type', async (tools) => { tools.timeout(5000); let timePassed = false; setTimeout(() => { timePassed = true; }, 2000); let hey = 'heyThere'; - await smartdelay.delayFor(3000, hey).then(async stringArg => { + await smartdelay.delayFor(3000, hey).then(async (stringArg) => { expect(stringArg).equal('heyThere'); }); }); @@ -45,7 +45,7 @@ tap.test('smartdelay.Timeout', async () => { await timeout.promise; }); -tap.test('smartdelay.Timeout should cancel', async tools => { +tap.test('smartdelay.Timeout should cancel', async (tools) => { let timeout = new smartdelay.Timeout(60000); timeout.cancel(); }); diff --git a/ts/index.ts b/ts/index.ts index 93e79a9..9407e0f 100644 --- a/ts/index.ts +++ b/ts/index.ts @@ -5,7 +5,11 @@ import * as smartpromise from '@pushrocks/smartpromise'; * @param timeInMillisecondArg * @param passOnArg */ -export let delayFor = async (timeInMillisecondArg: number, passOnArg?: T, unrefedArg = false) => { +export let delayFor = async ( + timeInMillisecondArg: number, + passOnArg?: T, + unrefedArg = false +) => { const timeout = new Timeout(timeInMillisecondArg, null, unrefedArg); await timeout.promise; return passOnArg; @@ -20,7 +24,11 @@ export let delayForRandom = async ( passOnArg?: T, unrefedArg = false ) => { - await delayFor(Math.random() * (timeMaxInMillisecondArg - timeMinInMillisecondArg) + timeMinInMillisecondArg, null, unrefedArg) + await delayFor( + Math.random() * (timeMaxInMillisecondArg - timeMinInMillisecondArg) + timeMinInMillisecondArg, + null, + unrefedArg + ); return passOnArg; }; @@ -62,7 +70,7 @@ export class Timeout { this._cancelled = true; clearTimeout(this._timeout); } - + public getTimeLeft() { const result = this.started + this.timeoutInMillis - Date.now(); return result > 0 ? result : 0;