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 a95dfb6..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: - image: registry.gitlab.com/hosttoday/ht-docker-node:snyk +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 + +auditDevDependencies: + image: registry.gitlab.com/hosttoday/ht-docker-node:npmci stage: security script: - npmci npm prepare - npmci command npm install --ignore-scripts - - npmci command snyk test + - npmci command npm config set registry https://registry.npmjs.org + - npmci command npm audit --audit-level=high --only=dev tags: - - lossless - docker - - notpriv + 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/npmextra.json b/npmextra.json index 4178389..51bfa20 100644 --- a/npmextra.json +++ b/npmextra.json @@ -4,6 +4,7 @@ "npmAccessLevel": "public" }, "gitzone": { + "projectType": "npm", "module": { "githost": "gitlab.com", "gitscope": "pushrocks", diff --git a/package.json b/package.json index aaa889e..202d46d 100644 --- a/package.json +++ b/package.json @@ -3,11 +3,11 @@ "version": "1.0.22", "private": false, "description": "go legal programmatically", - "main": "dist/index.js", - "typings": "dist/index.d.ts", + "main": "dist_ts/index.js", + "typings": "dist_ts/index.d.ts", "scripts": { - "test": "tstest test/", - "build": "tsbuild" + "test": "(tstest test/ --web)", + "build": "(tsbuild --web)" }, "repository": { "type": "git", @@ -47,11 +47,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 01d1205..2748af8 100644 --- a/readme.md +++ b/readme.md @@ -8,13 +8,20 @@ go legal programmatically * [docs (typedoc)](https://pushrocks.gitlab.io/smartlegal/) ## Status for master -[![build status](https://gitlab.com/pushrocks/smartlegal/badges/master/build.svg)](https://gitlab.com/pushrocks/smartlegal/commits/master) -[![coverage report](https://gitlab.com/pushrocks/smartlegal/badges/master/coverage.svg)](https://gitlab.com/pushrocks/smartlegal/commits/master) -[![npm downloads per month](https://img.shields.io/npm/dm/@pushrocks/smartlegal.svg)](https://www.npmjs.com/package/@pushrocks/smartlegal) -[![Known Vulnerabilities](https://snyk.io/test/npm/@pushrocks/smartlegal/badge.svg)](https://snyk.io/test/npm/@pushrocks/smartlegal) -[![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/smartlegal/badges/master/pipeline.svg)](https://lossless.cloud) +GitLab Pipline Test Coverage | [![coverage report](https://gitlab.com/pushrocks/smartlegal/badges/master/coverage.svg)](https://lossless.cloud) +npm | [![npm downloads per month](https://badgen.net/npm/dy/@pushrocks/smartlegal)](https://lossless.cloud) +Snyk | [![Known Vulnerabilities](https://badgen.net/snyk/pushrocks/smartlegal)](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/smartlegal)](https://lossless.cloud) +PackagePhobia (package size on registry) | [![PackagePhobia](https://badgen.net/packagephobia/publish/@pushrocks/smartlegal)](https://lossless.cloud) +BundlePhobia (total size when bundled) | [![BundlePhobia](https://badgen.net/bundlephobia/minzip/@pushrocks/smartlegal)](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 instellisense. smartlegal implements -* a license checker for checking dependency trees against a set of licenses +- a license checker for checking dependency trees against a set of licenses ## Contribution diff --git a/ts/mod.licensechecker/classes.checkresult.ts b/ts/mod.licensechecker/classes.checkresult.ts index 99095bb..562db26 100644 --- a/ts/mod.licensechecker/classes.checkresult.ts +++ b/ts/mod.licensechecker/classes.checkresult.ts @@ -1,9 +1,9 @@ -import { IModuleLicenseResult } from "./interfaces"; +import { IModuleLicenseResult } from './interfaces'; export class CheckResult { passingModules: IModuleLicenseResult[] = []; failingModules: IModuleLicenseResult[] = []; - + public addPassing(moduleResultArg: IModuleLicenseResult) { this.passingModules.push(moduleResultArg); } @@ -11,4 +11,4 @@ export class CheckResult { public addFailing(moduleResultArg: IModuleLicenseResult) { this.failingModules.push(moduleResultArg); } -} \ No newline at end of file +} diff --git a/ts/mod.licensechecker/classes.licensechecker.ts b/ts/mod.licensechecker/classes.licensechecker.ts index 023ed36..7a380c8 100644 --- a/ts/mod.licensechecker/classes.licensechecker.ts +++ b/ts/mod.licensechecker/classes.licensechecker.ts @@ -7,7 +7,7 @@ export class LicenseChecker { async excludeLicenseWithinPath(pathArg: string, licenseArrayArg: string[]) { const checkResult = new CheckResult(); const plainResultArray = await this.createPlainResultArray(pathArg); - plainResultArray.forEach(licenseResult => { + plainResultArray.forEach((licenseResult) => { if (licenseArrayArg.indexOf(licenseResult.license) === -1) { checkResult.addPassing(licenseResult); } else { @@ -20,7 +20,7 @@ export class LicenseChecker { async includeLicencesWithinPath(pathArg: string, licenseArrayArg: string[]) { const checkResult = new CheckResult(); const plainResultArray = await this.createPlainResultArray(pathArg); - plainResultArray.forEach(licenseResult => { + plainResultArray.forEach((licenseResult) => { if (licenseArrayArg.indexOf(licenseResult.license) !== -1) { checkResult.addPassing(licenseResult); } else { @@ -42,7 +42,7 @@ export class LicenseChecker { license: refObject.licenses, path: refObject.path, publisher: refObject.publisher, - repository: refObject.repository + repository: refObject.repository, }); } return resultArray; @@ -52,7 +52,7 @@ export class LicenseChecker { const done = plugins.smartpromise.defer(); licenseChecker.init( { - start: checkPathArg + start: checkPathArg, }, (err, licenseJson) => { if (err) { diff --git a/ts/mod.licensechecker/interfaces.ts b/ts/mod.licensechecker/interfaces.ts index 4a96e74..8823677 100644 --- a/ts/mod.licensechecker/interfaces.ts +++ b/ts/mod.licensechecker/interfaces.ts @@ -6,4 +6,4 @@ export interface IModuleLicenseResult { email: string; path: string; licenseFile: string; -} \ No newline at end of file +}