'use strict'; var util = require('util'); var Undertaker = require('undertaker'); var vfs = require('vinyl-fs'); var watch = require('glob-watcher'); function Gulp() { Undertaker.call(this); // Bind the functions for destructuring this.watch = this.watch.bind(this); this.task = this.task.bind(this); this.series = this.series.bind(this); this.parallel = this.parallel.bind(this); this.registry = this.registry.bind(this); this.tree = this.tree.bind(this); this.lastRun = this.lastRun.bind(this); this.src = this.src.bind(this); this.dest = this.dest.bind(this); this.symlink = this.symlink.bind(this); } util.inherits(Gulp, Undertaker); Gulp.prototype.src = vfs.src; Gulp.prototype.dest = vfs.dest; Gulp.prototype.symlink = vfs.symlink; Gulp.prototype.watch = function(glob, opt, task) { if (typeof opt === 'string' || typeof task === 'string' || Array.isArray(opt) || Array.isArray(task)) { throw new Error('watching ' + glob + ': watch task has to be ' + 'a function (optionally generated by using gulp.parallel ' + 'or gulp.series)'); } if (typeof opt === 'function') { task = opt; opt = {}; } opt = opt || {}; var fn; if (typeof task === 'function') { fn = this.parallel(task); } return watch(glob, opt, fn); }; // Let people use this class from our instance Gulp.prototype.Gulp = Gulp; var inst = new Gulp(); module.exports = inst;