initial
This commit is contained in:
32
dist/index.d.ts
vendored
Normal file
32
dist/index.d.ts
vendored
Normal file
@ -0,0 +1,32 @@
|
||||
/// <reference types="browser-sync" />
|
||||
/// <reference types="q" />
|
||||
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: plugins.q.Promise<void>;
|
||||
constructor(optionsArg: ISmartbrowserOptions);
|
||||
/**
|
||||
* starts the server and returns the browserSync instance in a resolved Promise
|
||||
*/
|
||||
start(): plugins.q.Promise<plugins.browserSync.BrowserSyncInstance>;
|
||||
/**
|
||||
* stops the smartbrowser instance
|
||||
*/
|
||||
stop(): plugins.q.Promise<void>;
|
||||
}
|
48
dist/index.js
vendored
Normal file
48
dist/index.js
vendored
Normal file
@ -0,0 +1,48 @@
|
||||
"use strict";
|
||||
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() {
|
||||
let done = plugins.q.defer();
|
||||
if (this.bsStatus === 'idle') {
|
||||
this.bsStatus = 'starting';
|
||||
let localDone = plugins.q.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 done.promise;
|
||||
}
|
||||
/**
|
||||
* stops the smartbrowser instance
|
||||
*/
|
||||
stop() {
|
||||
let done = plugins.q.defer();
|
||||
this.bsInstance.exit();
|
||||
this.bsStatus = 'idle';
|
||||
done.resolve();
|
||||
return done.promise;
|
||||
}
|
||||
}
|
||||
exports.Smartbrowser = Smartbrowser;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsa0RBQWlEO0FBZ0JqRDs7R0FFRztBQUNIO0lBT0ksWUFBWSxVQUFnQztRQU41QyxlQUFVLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtRQUN6QyxhQUFRLEdBQWdDO1lBQ3BDLE1BQU0sRUFBRSxFQUFFO1NBQ2IsQ0FBQTtRQUNELGFBQVEsR0FBYSxNQUFNLENBQUE7UUFHdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUE7UUFDakQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQTtJQUMvQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0QsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQTJDLENBQUE7UUFDckUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFBO1lBQzFCLElBQUksU0FBUyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFRLENBQUE7WUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFBO1lBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFBO2dCQUN6QixTQUFTLENBQUMsT0FBTyxFQUFFLENBQUE7Z0JBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQ2pDLENBQUMsQ0FBQyxDQUFBO1FBQ04sQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUUsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2pFLENBQUM7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0EsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQVEsQ0FBQTtRQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFBO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3ZCLENBQUM7Q0FDSjtBQTFDRCxvQ0EwQ0MifQ==
|
3
dist/smartbrowser.plugins.d.ts
vendored
Normal file
3
dist/smartbrowser.plugins.d.ts
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
import 'typings-global';
|
||||
export import browserSync = require('browser-sync');
|
||||
export import q = require('q');
|
5
dist/smartbrowser.plugins.js
vendored
Normal file
5
dist/smartbrowser.plugins.js
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
"use strict";
|
||||
require("typings-global");
|
||||
exports.browserSync = require("browser-sync");
|
||||
exports.q = require("q");
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRicm93c2VyLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGJyb3dzZXIucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEJBQXVCO0FBQ3ZCLDhDQUFtRDtBQUNuRCx5QkFBOEIifQ==
|
Reference in New Issue
Block a user