fix(core): update
This commit is contained in:
		
							
								
								
									
										23
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1,3 +1,22 @@
 | 
			
		||||
node_modules/
 | 
			
		||||
pages/
 | 
			
		||||
.nogit/
 | 
			
		||||
 | 
			
		||||
# artifacts
 | 
			
		||||
coverage/
 | 
			
		||||
public/
 | 
			
		||||
pages/
 | 
			
		||||
 | 
			
		||||
# installs
 | 
			
		||||
node_modules/
 | 
			
		||||
 | 
			
		||||
# caches
 | 
			
		||||
.yarn/
 | 
			
		||||
.cache/
 | 
			
		||||
.rpt2_cache
 | 
			
		||||
 | 
			
		||||
# builds
 | 
			
		||||
dist/
 | 
			
		||||
dist_web/
 | 
			
		||||
dist_serve/
 | 
			
		||||
dist_ts_web/
 | 
			
		||||
 | 
			
		||||
# custom
 | 
			
		||||
@@ -3,69 +3,123 @@ image: hosttoday/ht-docker-node:npmci
 | 
			
		||||
 | 
			
		||||
cache:
 | 
			
		||||
  paths:
 | 
			
		||||
  - .yarn/
 | 
			
		||||
  - .npmci_cache/
 | 
			
		||||
  key: "$CI_BUILD_STAGE"
 | 
			
		||||
 | 
			
		||||
stages:
 | 
			
		||||
- security
 | 
			
		||||
- test
 | 
			
		||||
- release
 | 
			
		||||
- trigger
 | 
			
		||||
- pages
 | 
			
		||||
- metadata
 | 
			
		||||
 | 
			
		||||
testLEGACY:
 | 
			
		||||
  stage: test
 | 
			
		||||
# ====================
 | 
			
		||||
# security stage
 | 
			
		||||
# ====================
 | 
			
		||||
mirror:
 | 
			
		||||
  stage: security
 | 
			
		||||
  script:
 | 
			
		||||
    - npmci test legacy
 | 
			
		||||
  coverage: /\d+.?\d+?\%\s*coverage/
 | 
			
		||||
  - npmci git mirror
 | 
			
		||||
  tags:
 | 
			
		||||
  - docker
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  - notpriv
 | 
			
		||||
 | 
			
		||||
snyk:
 | 
			
		||||
  stage: security
 | 
			
		||||
  script:
 | 
			
		||||
    - npmci npm prepare
 | 
			
		||||
    - npmci command npm install -g snyk
 | 
			
		||||
    - npmci command npm install --ignore-scripts
 | 
			
		||||
    - npmci command snyk test
 | 
			
		||||
  tags:
 | 
			
		||||
  - docker
 | 
			
		||||
  - notpriv
 | 
			
		||||
 | 
			
		||||
# ====================
 | 
			
		||||
# test stage
 | 
			
		||||
# ====================
 | 
			
		||||
 | 
			
		||||
testLTS:
 | 
			
		||||
  stage: test
 | 
			
		||||
  script:
 | 
			
		||||
    - npmci test lts
 | 
			
		||||
  - npmci npm prepare
 | 
			
		||||
  - npmci node install lts
 | 
			
		||||
  - npmci npm install
 | 
			
		||||
  - npmci npm test
 | 
			
		||||
  coverage: /\d+.?\d+?\%\s*coverage/
 | 
			
		||||
  tags:
 | 
			
		||||
  - docker
 | 
			
		||||
  - notpriv
 | 
			
		||||
    
 | 
			
		||||
testSTABLE:
 | 
			
		||||
  stage: test
 | 
			
		||||
  script:
 | 
			
		||||
    - npmci test stable
 | 
			
		||||
  - npmci npm prepare
 | 
			
		||||
  - npmci node install stable
 | 
			
		||||
  - npmci npm install
 | 
			
		||||
  - npmci npm test
 | 
			
		||||
  coverage: /\d+.?\d+?\%\s*coverage/
 | 
			
		||||
  tags:
 | 
			
		||||
  - docker
 | 
			
		||||
  - notpriv
 | 
			
		||||
 | 
			
		||||
release:
 | 
			
		||||
  stage: release
 | 
			
		||||
  script:
 | 
			
		||||
    - npmci publish
 | 
			
		||||
  - npmci node install stable
 | 
			
		||||
  - npmci npm publish
 | 
			
		||||
  only:
 | 
			
		||||
  - tags
 | 
			
		||||
  tags:
 | 
			
		||||
  - 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
 | 
			
		||||
  only:
 | 
			
		||||
  - tags
 | 
			
		||||
  tags:
 | 
			
		||||
  - docker
 | 
			
		||||
  - notpriv
 | 
			
		||||
 | 
			
		||||
pages:
 | 
			
		||||
  image: hosttoday/ht-docker-node:npmci
 | 
			
		||||
  stage: pages
 | 
			
		||||
  stage: metadata
 | 
			
		||||
  script:
 | 
			
		||||
    - npmci command yarn global add npmpage
 | 
			
		||||
    - npmci command npmpage --publish gitlab
 | 
			
		||||
    - npmci command npm install -g @gitzone/tsdoc
 | 
			
		||||
    - npmci npm prepare
 | 
			
		||||
    - npmci npm install
 | 
			
		||||
    - npmci command tsdoc
 | 
			
		||||
  tags:
 | 
			
		||||
    - docker
 | 
			
		||||
    - notpriv
 | 
			
		||||
  only:
 | 
			
		||||
    - tags
 | 
			
		||||
  artifacts:
 | 
			
		||||
    expire_in: 1 week
 | 
			
		||||
    paths:
 | 
			
		||||
    - public
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										40
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								README.md
									
									
									
									
									
								
							@@ -1,29 +1,35 @@
 | 
			
		||||
# smartbrowser
 | 
			
		||||
wraps browser-sync
 | 
			
		||||
# @pushrocks/smartbrowser
 | 
			
		||||
puppeteer wrapper for easy tasks
 | 
			
		||||
 | 
			
		||||
## Availabililty
 | 
			
		||||
[](https://www.npmjs.com/package/smartbrowser)
 | 
			
		||||
[](https://GitLab.com/pushrocks/smartbrowser)
 | 
			
		||||
[](https://github.com/pushrocks/smartbrowser)
 | 
			
		||||
[](https://pushrocks.gitlab.io/smartbrowser/)
 | 
			
		||||
## Availabililty and Links
 | 
			
		||||
* [npmjs.org (npm package)](https://www.npmjs.com/package/@pushrocks/smartbrowser)
 | 
			
		||||
* [gitlab.com (source)](https://gitlab.com/pushrocks/smartbrowser)
 | 
			
		||||
* [github.com (source mirror)](https://github.com/pushrocks/smartbrowser)
 | 
			
		||||
* [docs (typedoc)](https://pushrocks.gitlab.io/smartbrowser/)
 | 
			
		||||
 | 
			
		||||
## Status for master
 | 
			
		||||
[](https://GitLab.com/pushrocks/smartbrowser/commits/master)
 | 
			
		||||
[](https://GitLab.com/pushrocks/smartbrowser/commits/master)
 | 
			
		||||
[](https://www.npmjs.com/package/smartbrowser)
 | 
			
		||||
[](https://david-dm.org/pushrocks/smartbrowser)
 | 
			
		||||
[](https://www.bithound.io/github/pushrocks/smartbrowser/master/dependencies/npm)
 | 
			
		||||
[](https://www.bithound.io/github/pushrocks/smartbrowser)
 | 
			
		||||
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
 | 
			
		||||
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
 | 
			
		||||
[](http://standardjs.com/)
 | 
			
		||||
[](https://gitlab.com/pushrocks/smartbrowser/commits/master)
 | 
			
		||||
[](https://gitlab.com/pushrocks/smartbrowser/commits/master)
 | 
			
		||||
[](https://www.npmjs.com/package/@pushrocks/smartbrowser)
 | 
			
		||||
[](https://snyk.io/test/npm/@pushrocks/smartbrowser)
 | 
			
		||||
[](https://nodejs.org/dist/latest-v10.x/docs/api/)
 | 
			
		||||
[](https://nodejs.org/dist/latest-v10.x/docs/api/)
 | 
			
		||||
[](https://prettier.io/)
 | 
			
		||||
 | 
			
		||||
## 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)
 | 
			
		||||
 | 
			
		||||
[](https://push.rocks)
 | 
			
		||||
 | 
			
		||||
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)
 | 
			
		||||
 | 
			
		||||
[](https://maintainedby.lossless.com)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										32
									
								
								dist/index.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										32
									
								
								dist/index.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -1,32 +0,0 @@
 | 
			
		||||
/// <reference types="browser-sync" />
 | 
			
		||||
import * as plugins from './smartbrowser.plugins';
 | 
			
		||||
/**
 | 
			
		||||
 * the options interface of a Smartbrowser instance
 | 
			
		||||
 */
 | 
			
		||||
export interface ISmartbrowserOptions {
 | 
			
		||||
    webroot: string;
 | 
			
		||||
    watchFiles: string[];
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * Type of status that a bsInstance can have
 | 
			
		||||
 */
 | 
			
		||||
export declare type bsStatus = 'idle' | 'starting' | 'running';
 | 
			
		||||
/**
 | 
			
		||||
 * class smartbrowser controls a browser-sync instance for you
 | 
			
		||||
 */
 | 
			
		||||
export declare class Smartbrowser {
 | 
			
		||||
    bsInstance: plugins.browserSync.BrowserSyncInstance;
 | 
			
		||||
    bsConfig: plugins.browserSync.Options;
 | 
			
		||||
    bsStatus: bsStatus;
 | 
			
		||||
    bsStarted: Promise<void>;
 | 
			
		||||
    constructor(optionsArg: ISmartbrowserOptions);
 | 
			
		||||
    /**
 | 
			
		||||
     * starts the server and returns the browserSync instance in a resolved Promise
 | 
			
		||||
     */
 | 
			
		||||
    start(): Promise<plugins.browserSync.BrowserSyncInstance>;
 | 
			
		||||
    /**
 | 
			
		||||
     * stops the smartbrowser instance
 | 
			
		||||
     */
 | 
			
		||||
    stop(): Promise<void>;
 | 
			
		||||
    reload(): Promise<void>;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										63
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										63
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							@@ -1,63 +0,0 @@
 | 
			
		||||
"use strict";
 | 
			
		||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
 | 
			
		||||
    return new (P || (P = Promise))(function (resolve, reject) {
 | 
			
		||||
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
 | 
			
		||||
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
 | 
			
		||||
        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
 | 
			
		||||
        step((generator = generator.apply(thisArg, _arguments || [])).next());
 | 
			
		||||
    });
 | 
			
		||||
};
 | 
			
		||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
			
		||||
const plugins = require("./smartbrowser.plugins");
 | 
			
		||||
/**
 | 
			
		||||
 * class smartbrowser controls a browser-sync instance for you
 | 
			
		||||
 */
 | 
			
		||||
class Smartbrowser {
 | 
			
		||||
    constructor(optionsArg) {
 | 
			
		||||
        this.bsInstance = plugins.browserSync.create();
 | 
			
		||||
        this.bsConfig = {
 | 
			
		||||
            server: {}
 | 
			
		||||
        };
 | 
			
		||||
        this.bsStatus = 'idle';
 | 
			
		||||
        this.bsConfig.server.baseDir = optionsArg.webroot;
 | 
			
		||||
        this.bsConfig.files = optionsArg.watchFiles;
 | 
			
		||||
    }
 | 
			
		||||
    /**
 | 
			
		||||
     * starts the server and returns the browserSync instance in a resolved Promise
 | 
			
		||||
     */
 | 
			
		||||
    start() {
 | 
			
		||||
        return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
            let done = plugins.smartq.defer();
 | 
			
		||||
            if (this.bsStatus === 'idle') {
 | 
			
		||||
                this.bsStatus = 'starting';
 | 
			
		||||
                let localDone = plugins.smartq.defer();
 | 
			
		||||
                this.bsStarted = localDone.promise;
 | 
			
		||||
                this.bsInstance.init(this.bsConfig, () => {
 | 
			
		||||
                    this.bsStatus = 'running';
 | 
			
		||||
                    localDone.resolve();
 | 
			
		||||
                    done.resolve(this.bsInstance);
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                this.bsStarted.then(() => { done.resolve(this.bsInstance); });
 | 
			
		||||
            }
 | 
			
		||||
            return yield done.promise;
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
    /**
 | 
			
		||||
     * stops the smartbrowser instance
 | 
			
		||||
     */
 | 
			
		||||
    stop() {
 | 
			
		||||
        return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
            this.bsInstance.exit();
 | 
			
		||||
            this.bsStatus = 'idle';
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
    reload() {
 | 
			
		||||
        return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
            this.bsInstance.reload();
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
exports.Smartbrowser = Smartbrowser;
 | 
			
		||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsa0RBQWlEO0FBZ0JqRDs7R0FFRztBQUNIO0lBT0UsWUFBYSxVQUFnQztRQU43QyxlQUFVLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtRQUN6QyxhQUFRLEdBQWdDO1lBQ3RDLE1BQU0sRUFBRSxFQUFFO1NBQ1gsQ0FBQTtRQUNELGFBQVEsR0FBYSxNQUFNLENBQUE7UUFHekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUE7UUFDakQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQTtJQUM3QyxDQUFDO0lBRUQ7O09BRUc7SUFDRyxLQUFLOztZQUNULElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUEyQyxDQUFBO1lBQzFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUE7Z0JBQzFCLElBQUksU0FBUyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFRLENBQUE7Z0JBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQTtnQkFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUE7b0JBQ3pCLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtvQkFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7Z0JBQy9CLENBQUMsQ0FBQyxDQUFBO1lBQ0osQ0FBQztZQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUM5RCxDQUFDO1lBQ0QsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQTtRQUMzQixDQUFDO0tBQUE7SUFFRDs7T0FFRztJQUNHLElBQUk7O1lBQ1IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtZQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQTtRQUN4QixDQUFDO0tBQUE7SUFFSyxNQUFNOztZQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUE7UUFDMUIsQ0FBQztLQUFBO0NBQ0Y7QUEzQ0Qsb0NBMkNDIn0=
 | 
			
		||||
							
								
								
									
										3
									
								
								dist/smartbrowser.plugins.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								dist/smartbrowser.plugins.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -1,3 +0,0 @@
 | 
			
		||||
import 'typings-global';
 | 
			
		||||
export import browserSync = require('browser-sync');
 | 
			
		||||
export import smartq = require('smartq');
 | 
			
		||||
							
								
								
									
										6
									
								
								dist/smartbrowser.plugins.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								dist/smartbrowser.plugins.js
									
									
									
									
										vendored
									
									
								
							@@ -1,6 +0,0 @@
 | 
			
		||||
"use strict";
 | 
			
		||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
			
		||||
require("typings-global");
 | 
			
		||||
exports.browserSync = require("browser-sync");
 | 
			
		||||
exports.smartq = require("smartq");
 | 
			
		||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRicm93c2VyLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGJyb3dzZXIucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUN2Qiw4Q0FBbUQ7QUFDbkQsbUNBQXdDIn0=
 | 
			
		||||
@@ -3,5 +3,15 @@
 | 
			
		||||
    "globalNpmTools": [
 | 
			
		||||
      "npmts"
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
  "gitzone": {
 | 
			
		||||
    "module": {
 | 
			
		||||
      "githost": "gitlab.com",
 | 
			
		||||
      "gitscope": "pushrocks",
 | 
			
		||||
      "gitrepo": "smartbrowser",
 | 
			
		||||
      "shortDescription": "puppeteer wrapper for easy tasks",
 | 
			
		||||
      "npmPackagename": "@pushrocks/smartbrowser",
 | 
			
		||||
      "license": "MIT"
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1918
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										1918
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										32
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								package.json
									
									
									
									
									
								
							@@ -1,11 +1,12 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "smartbrowser",
 | 
			
		||||
  "name": "@pushrocks/smartbrowser",
 | 
			
		||||
  "version": "1.0.5",
 | 
			
		||||
  "description": "wraps browser-sync",
 | 
			
		||||
  "description": "simplified puppeteer",
 | 
			
		||||
  "main": "dist/index.js",
 | 
			
		||||
  "typings": "dist/index.d.ts",
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "test": "(npmts)"
 | 
			
		||||
    "test": "(npmts)",
 | 
			
		||||
    "build": "echo \"Not needed for now\""
 | 
			
		||||
  },
 | 
			
		||||
  "repository": {
 | 
			
		||||
    "type": "git",
 | 
			
		||||
@@ -18,13 +19,24 @@
 | 
			
		||||
  },
 | 
			
		||||
  "homepage": "https://gitlab.com/pushrocks/smartbrowser#README",
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@types/browser-sync": "0.0.34",
 | 
			
		||||
    "browser-sync": "^2.18.8",
 | 
			
		||||
    "smartq": "^1.1.1",
 | 
			
		||||
    "typings-global": "^1.0.14"
 | 
			
		||||
    "puppeteer": "^1.17.0"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "smartdelay": "^1.0.1",
 | 
			
		||||
    "tapbundle": "^1.0.5"
 | 
			
		||||
  }
 | 
			
		||||
    "@gitzone/tsbuild": "^2.1.11",
 | 
			
		||||
    "@gitzone/tstest": "^1.0.24",
 | 
			
		||||
    "@pushrocks/tapbundle": "^3.0.9",
 | 
			
		||||
    "tslint": "^5.16.0",
 | 
			
		||||
    "tslint-config-prettier": "^1.18.0"
 | 
			
		||||
  },
 | 
			
		||||
  "private": true,
 | 
			
		||||
  "files": [
 | 
			
		||||
    "ts/*",
 | 
			
		||||
    "ts_web/*",
 | 
			
		||||
    "dist/*",
 | 
			
		||||
    "dist_web/*",
 | 
			
		||||
    "assets/*",
 | 
			
		||||
    "cli.js",
 | 
			
		||||
    "npmextra.json",
 | 
			
		||||
    "readme.md"
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										37
									
								
								test/test.ts
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								test/test.ts
									
									
									
									
									
								
							@@ -1,29 +1,32 @@
 | 
			
		||||
import { tap, expect } from 'tapbundle'
 | 
			
		||||
import * as smartdelay from 'smartdelay'
 | 
			
		||||
import { tap, expect } from 'tapbundle';
 | 
			
		||||
import * as smartdelay from 'smartdelay';
 | 
			
		||||
 | 
			
		||||
import * as smartbrowser from '../dist/index'
 | 
			
		||||
let testSmartBrowser: smartbrowser.Smartbrowser
 | 
			
		||||
import * as smartbrowser from '../dist/index';
 | 
			
		||||
let testSmartBrowser: smartbrowser.Smartbrowser;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
tap.test('should instanstiate a new browser ', async () => {
 | 
			
		||||
tap
 | 
			
		||||
  .test('should instanstiate a new browser ', async () => {
 | 
			
		||||
    testSmartBrowser = new smartbrowser.Smartbrowser({
 | 
			
		||||
      webroot: './test/assets/',
 | 
			
		||||
      watchFiles: ['./test/assets/']
 | 
			
		||||
    });
 | 
			
		||||
    return expect(testSmartBrowser).to.be.instanceof(smartbrowser.Smartbrowser);
 | 
			
		||||
  })
 | 
			
		||||
  return expect(testSmartBrowser).to.be.instanceof(smartbrowser.Smartbrowser)
 | 
			
		||||
}).catch(tap.threw)
 | 
			
		||||
  .catch(tap.threw);
 | 
			
		||||
 | 
			
		||||
tap.test('should start the browser ', async () => {
 | 
			
		||||
  return await expect(testSmartBrowser.start()).to.eventually.be.fulfilled
 | 
			
		||||
}).catch(tap.threw)
 | 
			
		||||
tap
 | 
			
		||||
  .test('should start the browser ', async () => {
 | 
			
		||||
    return await expect(testSmartBrowser.start()).to.eventually.be.fulfilled;
 | 
			
		||||
  })
 | 
			
		||||
  .catch(tap.threw);
 | 
			
		||||
 | 
			
		||||
tap.test('should stop the browser ', async () => {
 | 
			
		||||
  return await smartdelay.delayFor(2000).then(() => {
 | 
			
		||||
    return expect(testSmartBrowser.stop()).to.eventually.be.fulfilled
 | 
			
		||||
  })
 | 
			
		||||
})
 | 
			
		||||
    return expect(testSmartBrowser.stop()).to.eventually.be.fulfilled;
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
tap.test('should exit correctly', async () => {
 | 
			
		||||
  smartdelay.delayFor(2000).then(() => {
 | 
			
		||||
    process.exit(0)
 | 
			
		||||
  })
 | 
			
		||||
})
 | 
			
		||||
    process.exit(0);
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										62
									
								
								ts/index.ts
									
									
									
									
									
								
							
							
						
						
									
										62
									
								
								ts/index.ts
									
									
									
									
									
								
							@@ -1,63 +1,5 @@
 | 
			
		||||
import * as plugins from './smartbrowser.plugins'
 | 
			
		||||
import * as plugins from './smartbrowser.plugins';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * the options interface of a Smartbrowser instance
 | 
			
		||||
 */
 | 
			
		||||
export interface ISmartbrowserOptions {
 | 
			
		||||
  webroot: string
 | 
			
		||||
  watchFiles: string[]
 | 
			
		||||
export class SmartBrowser {
 | 
			
		||||
  
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Type of status that a bsInstance can have
 | 
			
		||||
 */
 | 
			
		||||
export type bsStatus = 'idle' | 'starting' | 'running'
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * class smartbrowser controls a browser-sync instance for you
 | 
			
		||||
 */
 | 
			
		||||
export class Smartbrowser {
 | 
			
		||||
  bsInstance = plugins.browserSync.create()
 | 
			
		||||
  bsConfig: plugins.browserSync.Options = {
 | 
			
		||||
    server: {}
 | 
			
		||||
  }
 | 
			
		||||
  bsStatus: bsStatus = 'idle'
 | 
			
		||||
  bsStarted: Promise<void>
 | 
			
		||||
  constructor (optionsArg: ISmartbrowserOptions) {
 | 
			
		||||
    this.bsConfig.server.baseDir = optionsArg.webroot
 | 
			
		||||
    this.bsConfig.files = optionsArg.watchFiles
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * starts the server and returns the browserSync instance in a resolved Promise
 | 
			
		||||
   */
 | 
			
		||||
  async start (): Promise<plugins.browserSync.BrowserSyncInstance> {
 | 
			
		||||
    let done = plugins.smartq.defer<plugins.browserSync.BrowserSyncInstance>()
 | 
			
		||||
    if (this.bsStatus === 'idle') {
 | 
			
		||||
      this.bsStatus = 'starting'
 | 
			
		||||
      let localDone = plugins.smartq.defer<void>()
 | 
			
		||||
      this.bsStarted = localDone.promise
 | 
			
		||||
      this.bsInstance.init(this.bsConfig, () => {
 | 
			
		||||
        this.bsStatus = 'running'
 | 
			
		||||
        localDone.resolve()
 | 
			
		||||
        done.resolve(this.bsInstance)
 | 
			
		||||
      })
 | 
			
		||||
    } else {
 | 
			
		||||
      this.bsStarted.then(() => { done.resolve(this.bsInstance) })
 | 
			
		||||
    }
 | 
			
		||||
    return await done.promise
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * stops the smartbrowser instance
 | 
			
		||||
   */
 | 
			
		||||
  async stop (): Promise<void> {
 | 
			
		||||
    this.bsInstance.exit()
 | 
			
		||||
    this.bsStatus = 'idle'
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async reload (): Promise<void> {
 | 
			
		||||
    this.bsInstance.reload()
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,3 @@
 | 
			
		||||
import 'typings-global'
 | 
			
		||||
export import browserSync = require('browser-sync')
 | 
			
		||||
export import smartq = require('smartq')
 | 
			
		||||
import 'typings-global';
 | 
			
		||||
export import browserSync = require('browser-sync');
 | 
			
		||||
export import smartq = require('smartq');
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										16
									
								
								tslint.json
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								tslint.json
									
									
									
									
									
								
							@@ -1,3 +1,17 @@
 | 
			
		||||
{
 | 
			
		||||
    "extends": "tslint-config-standard"
 | 
			
		||||
  "extends": ["tslint:latest", "tslint-config-prettier"],
 | 
			
		||||
  "rules": {
 | 
			
		||||
    "semicolon": [true, "always"],
 | 
			
		||||
    "no-console": false,
 | 
			
		||||
    "ordered-imports": false,
 | 
			
		||||
    "object-literal-sort-keys": false,
 | 
			
		||||
    "member-ordering": {
 | 
			
		||||
      "options":{
 | 
			
		||||
        "order": [
 | 
			
		||||
          "static-method"
 | 
			
		||||
        ]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "defaultSeverity": "warning"
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user