diff --git a/browser-sync/browser-sync-tests.ts b/browser-sync/browser-sync-tests.ts new file mode 100644 index 000000000..0d369e393 --- /dev/null +++ b/browser-sync/browser-sync-tests.ts @@ -0,0 +1,65 @@ +/// +import browserSync = require("browser-sync"); + +browserSync({ + server: { + baseDir: "./" + } +}); + +browserSync({ + proxy: "yourlocal.dev" +}); + +var config = { + server: { + baseDir: "./" + } +}; + +// config only +browserSync(config); + +// config + callback +browserSync(config, function (err, bs) { + if (!err) { + console.log("BrowserSync is ready!"); + } +}); + +// browser reload +browserSync.reload(); + +// single file +browserSync.reload( "styles.css" ); + +// multiple files +browserSync.reload( ["styles.css", "ie.css"] ); + +// streams support +browserSync.reload( { stream: true } ); + +browserSync.notify("Compiling, please wait!"); + +browserSync.notify("HTML is supported too!"); + +// Since 1.3.0, specify a timeout +browserSync.notify("This message will only last a second", 1000); + +browserSync(config, function (err, bs) { + browserSync.exit(); +}); + +console.log(browserSync.active); // false + +browserSync(config, function (err, bs) { + console.log(browserSync.active); // true +}); + +var evt = browserSync.emitter; + +evt.on("init", function () { + console.log("BrowserSync is running!"); +}); + +browserSync(config); \ No newline at end of file diff --git a/browser-sync/browser-sync.d.ts b/browser-sync/browser-sync.d.ts new file mode 100644 index 000000000..5dde0e854 --- /dev/null +++ b/browser-sync/browser-sync.d.ts @@ -0,0 +1,98 @@ +// Type definitions for browser-sync +// Project: http://www.browsersync.io/ +// Definitions by: Asana +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare module "browser-sync" { + import http = require("http"); + + function BrowserSync(config?: BrowserSync.Options, callback?: (err: Error, bs: Object) => any): void; + + module BrowserSync { + export function reload(): void; + export function reload(file: string): void; + export function reload(files: string[]): void; + export function reload(options: {stream: boolean}): NodeJS.ReadWriteStream; + + export function notify(message: string, timeout?: number): void; + + export function exit(): void; + + export var active: boolean; + + export var emitter: NodeJS.EventEmitter; + + interface Options { + files?: string | string[]; + watchOptions?: GazeOptions; + server?: ServerOptions; + proxy?: string | boolean; + port?: number; + https?: boolean; + ghostMode?: GhostOptions | boolean; + logLevel?: string; + logPrefix?: string; + logConnections?: boolean; + logFileChanges?: boolean; + logSnippet?: boolean; + snippetOptions?: SnippetOptions; + tunnel?: string | boolean; + online?: boolean; + open?: string | boolean; + browser?: string | string[]; + xip?: boolean; + notify?: boolean; + scrollProportionally?: boolean; + scrollThrottle?: number; + reloadDelay?: number; + injectChanges?: boolean; + startPath?: string; + minify?: boolean; + host?: string; + codeSync?: boolean; + timestamps?: boolean; + scriptPath?: (path: string) => string; + socket?: SocketOptions; + } + + interface GazeOptions { + interval?: number; + debounceDelay?: number; + mode?: string; + cwd?: string; + } + + interface ServerOptions { + baseDir?: string; + directory?: boolean; + index?: string; + routes?: {[path: string]: string}; + middleware?: MiddlewareHandler[]; + } + + interface MiddlewareHandler { + (req: http.ServerRequest, res: http.ServerResponse, next: Function): any; + } + + interface GhostOptions { + clicks?: boolean; + scroll?: boolean; + forms?: boolean; + } + + interface SnippetOptions { + ignorePaths?: string; + rule?: {match?: RegExp; fn?: (snippet: string, match: string) => any}; + } + + interface SocketOptions { + path?: string; + clientPath?: string; + namespace?: string; + } + } + + export = BrowserSync; +} \ No newline at end of file