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: