diff --git a/gulp-if/gulp-if-tests.ts b/gulp-if/gulp-if-tests.ts
index e1ba54c91..6edb3bc13 100644
--- a/gulp-if/gulp-if-tests.ts
+++ b/gulp-if/gulp-if-tests.ts
@@ -1,10 +1,22 @@
///
///
-import gulp = require("gulp");
-import _if = require("gulp-if");
+import gulp = require('gulp');
+import _if = require('gulp-if');
-gulp.src("test.css")
- .pipe(_if(true, gulp.src("test.css")));
+gulp.src('test.css')
+ .pipe(_if(true, gulp.src('test.css')));
-gulp.src("test.css")
- .pipe(_if(false, gulp.src("test.css"), gulp.src("test.css")));
\ No newline at end of file
+gulp.src('test.css')
+ .pipe(_if(false, gulp.src('test.css'), gulp.src('test.css')));
+
+gulp.src('test.css')
+ .pipe(_if({isDirectory: true}, gulp.src('test.css')));
+
+gulp.src('test.css')
+ .pipe(_if({isFile: true}, gulp.src('test.css')));
+
+gulp.src('test.css')
+ .pipe(_if(file => true, gulp.src('test.css')));
+
+gulp.src('test.css')
+ .pipe(_if(/.*?\.css/, gulp.src('test.css')));
\ No newline at end of file
diff --git a/gulp-if/gulp-if.d.ts b/gulp-if/gulp-if.d.ts
index 474682b9d..9eab80f8b 100644
--- a/gulp-if/gulp-if.d.ts
+++ b/gulp-if/gulp-if.d.ts
@@ -1,14 +1,64 @@
// Type definitions for gulp-if
// Project: https://github.com/robrich/gulp-if
-// Definitions by: Asana
+// Definitions by: Asana , Joe Skeen
// Definitions: https://github.com/borisyankov/DefinitelyTyped
///
+///
-declare module "gulp-if" {
- function gulpIf(
- condition: boolean,
- stream: NodeJS.ReadWriteStream,
- elseStream?: NodeJS.ReadWriteStream): NodeJS.ReadWriteStream;
+declare module 'gulp-if' {
+ import fs = require('fs');
+ import vinyl = require('vinyl');
+
+ interface GulpIf {
+ /**
+ * gulp-if will pipe data to stream whenever condition is truthy.
+ * If condition is falsey and elseStream is passed, data will pipe to elseStream
+ * After data is piped to stream or elseStream or neither, data is piped down-stream.
+ *
+ * @param condition whether input should be piped to stream
+ * @param stream the stream to pipe to if condition is true
+ * @param elseStream (optional) the stream to pipe to if condition is false
+ */
+ (condition: boolean, stream: NodeJS.ReadWriteStream, elseStream?: NodeJS.ReadWriteStream): NodeJS.ReadWriteStream;
+ /**
+ * gulp-if will pipe data to stream whenever condition is truthy.
+ * If condition is falsey and elseStream is passed, data will pipe to elseStream
+ * After data is piped to stream or elseStream or neither, data is piped down-stream.
+ *
+ * @param condition a Node Stat filter condition to be executed on the vinyl file's Stats object
+ * @param stream the stream to pipe to if condition is true
+ * @param elseStream (optional) the stream to pipe to if condition is false
+ */
+ (condition: StatFilterCondition, stream: NodeJS.ReadWriteStream, elseStream?: NodeJS.ReadWriteStream): NodeJS.ReadWriteStream;
+ /**
+ * gulp-if will pipe data to stream whenever condition is truthy.
+ * If condition is falsey and elseStream is passed, data will pipe to elseStream
+ * After data is piped to stream or elseStream or neither, data is piped down-stream.
+ *
+ * @param condition a function taking a vinyl file and returning a boolean
+ * @param stream the stream to pipe to if condition is true
+ * @param elseStream (optional) the stream to pipe to if condition is false
+ */
+ (condition: (fs: vinyl) => boolean, stream: NodeJS.ReadWriteStream, elseStream?: NodeJS.ReadWriteStream): NodeJS.ReadWriteStream;
+ /**
+ * gulp-if will pipe data to stream whenever condition is truthy.
+ * If condition is falsey and elseStream is passed, data will pipe to elseStream
+ * After data is piped to stream or elseStream or neither, data is piped down-stream.
+ *
+ * @param condition a RegularExpression that works on the file.path
+ * @param stream the stream to pipe to if condition is true
+ * @param elseStream (optional) the stream to pipe to if condition is false
+ */
+ (condition: RegExp, stream: NodeJS.ReadWriteStream, elseStream?: NodeJS.ReadWriteStream): NodeJS.ReadWriteStream;
+ }
+
+ interface StatFilterCondition {
+ isDirectory?: boolean;
+ isFile?: boolean;
+ }
+
+ var gulpIf: GulpIf;
+
export = gulpIf;
}
\ No newline at end of file