diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8dba6ab..77d706f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,62 +7,121 @@ cache: key: "$CI_BUILD_STAGE" stages: +- security - test - release -- trigger -- pages +- metadata +# ==================== +# security stage +# ==================== +mirror: + stage: security + script: + - npmci git mirror + tags: + - docker + - notpriv + +snyk: + stage: security + script: + - npmci command yarn global add snyk + - npmci command yarn install --ignore-scripts + - npmci command snyk test + tags: + - docker + - notpriv + +# ==================== +# test stage +# ==================== testLEGACY: stage: test script: - - npmci test legacy + - npmci node install legacy + - npmci npm install + - npmci npm test coverage: /\d+.?\d+?\%\s*coverage/ tags: - - docker + - docker + - notpriv allow_failure: true testLTS: stage: test script: - - npmci test lts + - npmci node install lts + - npmci npm install + - npmci npm test coverage: /\d+.?\d+?\%\s*coverage/ tags: - - docker + - docker + - notpriv testSTABLE: stage: test script: - - npmci test stable + - npmci node install stable + - npmci npm install + - npmci npm test coverage: /\d+.?\d+?\%\s*coverage/ tags: - - docker + - docker + - notpriv release: stage: release script: - - npmci publish + - npmci node install stable + - npmci npm publish only: - - tags + - tags tags: - - docker + - docker + - notpriv + +# ==================== +# metadata stage +# ==================== +codequality: + stage: metadata + image: docker:stable + allow_failure: true + services: + - docker:stable-dind + script: + - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/') + - docker run + --env SOURCE_CODE="$PWD" + --volume "$PWD":/code + --volume /var/run/docker.sock:/var/run/docker.sock + "registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code + artifacts: + paths: [codeclimate.json] + tags: + - docker + - priv trigger: - stage: trigger + stage: metadata script: - - npmci trigger + - npmci trigger only: - - tags + - tags tags: - - docker + - docker + - notpriv pages: image: hosttoday/ht-docker-node:npmci - stage: pages + stage: metadata script: - - npmci commadn yarn global add npmpage - - npmci command npmpage --publish gitlab + - npmci command yarn global add npmpage + - npmci command npmpage tags: - docker + - notpriv only: - tags artifacts: diff --git a/README.md b/README.md index 85fbe17..d309dbb 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,16 @@ # smartopen + open things ## Availabililty + [![npm](https://pushrocks.gitlab.io/assets/repo-button-npm.svg)](https://www.npmjs.com/package/smartopen) [![git](https://pushrocks.gitlab.io/assets/repo-button-git.svg)](https://GitLab.com/pushrocks/smartopen) [![git](https://pushrocks.gitlab.io/assets/repo-button-mirror.svg)](https://github.com/pushrocks/smartopen) [![docs](https://pushrocks.gitlab.io/assets/repo-button-docs.svg)](https://pushrocks.gitlab.io/smartopen/) ## Status for master + [![build status](https://GitLab.com/pushrocks/smartopen/badges/master/build.svg)](https://GitLab.com/pushrocks/smartopen/commits/master) [![coverage report](https://GitLab.com/pushrocks/smartopen/badges/master/coverage.svg)](https://GitLab.com/pushrocks/smartopen/commits/master) [![npm downloads per month](https://img.shields.io/npm/dm/smartopen.svg)](https://www.npmjs.com/package/smartopen) @@ -19,11 +22,12 @@ open things [![JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/) ## Usage + Use TypeScript for best in class instellisense. For further information read the linked docs at the top of this README. > MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh) -| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html) +> | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html) [![repo-footer](https://pushrocks.gitlab.io/assets/repo-footer.svg)](https://push.rocks) diff --git a/dist/index.d.ts b/dist/index.d.ts index e871dc7..00db0ab 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,2 +1,4 @@ +/// import 'typings-global'; -export declare let openUrl: (urlArg: any) => Promise; +import { ChildProcess } from 'child_process'; +export declare let openUrl: (urlArg: any) => Promise; diff --git a/dist/index.js b/dist/index.js index 76d55f9..82ac699 100644 --- a/dist/index.js +++ b/dist/index.js @@ -9,8 +9,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }; Object.defineProperty(exports, "__esModule", { value: true }); require("typings-global"); -const open = require("open"); +const open = require("opn"); exports.openUrl = (urlArg) => __awaiter(this, void 0, void 0, function* () { - open(urlArg); + const childProcess = yield open(urlArg, { + wait: false + }); + return childProcess; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsMEJBQXVCO0FBQ3ZCLDZCQUE2QjtBQUVsQixRQUFBLE9BQU8sR0FBRyxDQUFPLE1BQU07SUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBQ2QsQ0FBQyxDQUFBLENBQUEifQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsMEJBQXdCO0FBQ3hCLDRCQUE2QjtBQUdsQixRQUFBLE9BQU8sR0FBRyxDQUFNLE1BQU0sRUFBQyxFQUFFO0lBQ2xDLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUN0QyxJQUFJLEVBQUUsS0FBSztLQUNaLENBQUMsQ0FBQztJQUNILE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUMsQ0FBQSxDQUFDIn0= \ No newline at end of file diff --git a/package.json b/package.json index 294ffd1..4651d0e 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,12 @@ { - "name": "smartopen", + "name": "@pushrocks/smartopen", "version": "1.0.3", "description": "open things", "main": "dist/index.js", "typings": "dist/index.d.ts", "scripts": { - "test": "(npmts)" + "test": "", + "build": "npmts" }, "repository": { "type": "git", @@ -22,10 +23,11 @@ "homepage": "https://gitlab.com/pushrocks/smartopen#README", "dependencies": { "@types/open": "^0.0.29", - "open": "^0.0.5", - "typings-global": "^1.0.20" + "@types/opn": "^5.1.0", + "opn": "^5.3.0" }, "devDependencies": { - "tapbundle": "^1.1.1" + "@types/node": "^10.1.2", + "tapbundle": "^2.0.0" } } diff --git a/test/test.ts b/test/test.ts index f6c21ac..4c5eb61 100644 --- a/test/test.ts +++ b/test/test.ts @@ -1,9 +1,9 @@ -import { expect, tap } from 'tapbundle' +import { expect, tap } from 'tapbundle'; -import * as smartopen from '../ts/index' +import * as smartopen from '../ts/index'; tap.test('should open a webpage', async () => { - smartopen.openUrl('https://lossless.com') -}) + await smartopen.openUrl('https://lossless.com'); +}); -tap.start() +tap.start(); diff --git a/ts/index.ts b/ts/index.ts index 7eed066..2727c1b 100644 --- a/ts/index.ts +++ b/ts/index.ts @@ -1,6 +1,9 @@ -import 'typings-global' -import open = require('open') +import open = require('opn'); +import { ChildProcess } from 'child_process'; -export let openUrl = async (urlArg) => { - open(urlArg) -} +export let openUrl = async urlArg => { + const childProcess = await open(urlArg, { + wait: false + }); + return childProcess; +}; diff --git a/yarn.lock b/yarn.lock index c88c1cc..de80037 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,12 +9,24 @@ "@types/chai" "*" "@types/promises-a-plus" "*" +"@types/chai-as-promised@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.0.tgz#010b04cde78eacfb6e72bfddb3e58fe23c2e78b9" + dependencies: + "@types/chai" "*" + "@types/chai-string@^1.1.30": version "1.1.30" resolved "https://registry.yarnpkg.com/@types/chai-string/-/chai-string-1.1.30.tgz#4d8744b31a5a2295fc01c981ed1e2d4c8a070f0a" dependencies: "@types/chai" "*" +"@types/chai-string@^1.4.0": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@types/chai-string/-/chai-string-1.4.1.tgz#3a9d22716c27f2759bf272a4dbbdb593f18399e3" + dependencies: + "@types/chai" "*" + "@types/chai@*": version "4.0.3" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.0.3.tgz#6c2264b195cd2bb4c95c108487e13df0c8567c3e" @@ -23,6 +35,10 @@ version "3.5.2" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-3.5.2.tgz#c11cd2817d3a401b7ba0f5a420f35c56139b1c1e" +"@types/chai@^4.1.2": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.3.tgz#b8a74352977a23b604c01aa784f5b793443fb7dc" + "@types/glob@*": version "5.0.31" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-5.0.31.tgz#6cb8500bd170750c1948f785cc5828e9cff0c36a" @@ -38,10 +54,20 @@ version "8.0.23" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.23.tgz#c746697004782346594a0d755c34425bbf3014d2" +"@types/node@^10.1.2": + version "10.1.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.1.2.tgz#1b928a0baa408fc8ae3ac012cc81375addc147c6" + "@types/open@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/open/-/open-0.0.29.tgz#3de910012674909db14d608d1fde44ffa7a9ecea" +"@types/opn@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@types/opn/-/opn-5.1.0.tgz#bff7bc371677f4bdbb37884400e03fd81f743927" + dependencies: + "@types/node" "*" + "@types/promises-a-plus@*": version "0.0.27" resolved "https://registry.yarnpkg.com/@types/promises-a-plus/-/promises-a-plus-0.0.27.tgz#c64651134614c84b8f5d7114ce8901d36a609780" @@ -94,7 +120,13 @@ chai-as-promised@^6.0.0: dependencies: check-error "^1.0.2" -chai-string@^1.3.0: +chai-as-promised@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0" + dependencies: + check-error "^1.0.2" + +chai-string@^1.3.0, chai-string@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/chai-string/-/chai-string-1.4.0.tgz#359140c051d36a4e4b1a5fc6b910152f438a8d49" @@ -106,7 +138,18 @@ chai@^3.5.0: deep-eql "^0.1.3" type-detect "^1.0.0" -check-error@^1.0.2: +chai@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c" + dependencies: + assertion-error "^1.0.1" + check-error "^1.0.1" + deep-eql "^3.0.0" + get-func-name "^2.0.0" + pathval "^1.0.0" + type-detect "^4.0.0" + +check-error@^1.0.1, check-error@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" @@ -120,6 +163,12 @@ deep-eql@^0.1.3: dependencies: type-detect "0.1.1" +deep-eql@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + dependencies: + type-detect "^4.0.0" + define-properties@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" @@ -169,6 +218,10 @@ function-bind@^1.0.2, function-bind@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + glob@^7.0.0: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -219,6 +272,10 @@ is-symbol@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -275,9 +332,11 @@ once@^1.3.0: dependencies: wrappy "1" -open@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/open/-/open-0.0.5.tgz#42c3e18ec95466b6bf0dc42f3a2945c3f0cad8fc" +opn@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" + dependencies: + is-wsl "^1.1.0" path-is-absolute@^1.0.0: version "1.0.1" @@ -287,6 +346,10 @@ path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" +pathval@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" + pretty-bytes@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" @@ -326,6 +389,17 @@ smartchai@^1.0.3: chai-as-promised "^6.0.0" chai-string "^1.3.0" +smartchai@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/smartchai/-/smartchai-2.0.1.tgz#d20f17221f0e3c6c3473600b78ddfba0ab0ea762" + dependencies: + "@types/chai" "^4.1.2" + "@types/chai-as-promised" "^7.1.0" + "@types/chai-string" "^1.4.0" + chai "^4.1.2" + chai-as-promised "^7.1.1" + chai-string "^1.4.0" + smartdelay@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/smartdelay/-/smartdelay-1.0.3.tgz#5fd44dad77262d110702f0293efa80c072cfb579" @@ -362,6 +436,16 @@ tapbundle@^1.1.1: smartq "^1.1.1" typings-global "^1.0.19" +tapbundle@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tapbundle/-/tapbundle-2.0.0.tgz#79fce68ff185c786fabaf6eb589a4afc7d2714b7" + dependencies: + early "^2.1.1" + leakage "^0.3.0" + smartchai "^2.0.0" + smartdelay "^1.0.3" + smartq "^1.1.1" + type-detect@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" @@ -370,7 +454,11 @@ type-detect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2" -typings-global@^1.0.14, typings-global@^1.0.16, typings-global@^1.0.19, typings-global@^1.0.20: +type-detect@^4.0.0: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + +typings-global@^1.0.14, typings-global@^1.0.16, typings-global@^1.0.19: version "1.0.20" resolved "https://registry.yarnpkg.com/typings-global/-/typings-global-1.0.20.tgz#3da769c54db538247c5d877d1d9e97eb2ec981ff" dependencies: