1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- "use strict";
- var path = require("path");
- var micromatch = require("micromatch");
- var utils = require("./public-utils");
- /**
- * @param emitter
- * @returns {Function}
- */
- module.exports = function (emitter) {
- /**
- * Return a transform/through stream that listens to file
- * paths and fires internal Browsersync events.
- * @param {{once: boolean, match: string|array}} [opts]
- * @returns {Stream.Transform}
- */
- function browserSyncThroughStream(opts) {
- opts = opts || {};
- var emitted = false;
- var Transform = require("stream").Transform;
- var reload = new Transform({ objectMode: true });
- var changed = [];
- reload._transform = function (file, encoding, next) {
- var stream = this;
- /**
- * End is always called to send the current file down
- * stream. Browsersync never acts upon a stream,
- * we only `listen` to it.
- */
- function end() {
- stream.push(file); // always send the file down-stream
- next();
- }
- /**
- * If {match: <pattern>} was provided, test the
- * current filepath against it
- */
- if (opts.match) {
- if (!micromatch(file.path, opts.match, { dot: true }).length) {
- return end();
- }
- }
- /**
- * if {once: true} provided, emit the reload event for the
- * first file only
- */
- if (opts.once === true && !emitted) {
- utils.emitBrowserReload(emitter);
- emitted = true;
- }
- else {
- // handle multiple
- if (opts.once === true && emitted) {
- }
- else {
- if (file.path) {
- emitted = true;
- utils.emitChangeEvent(emitter, file.path, false);
- changed.push(path.basename(file.path));
- }
- }
- }
- end();
- };
- /**
- * When this current operation has finished, emit the
- * steam:changed event so that any loggers can pick up it
- * @param next
- * @private
- */
- reload._flush = function (next) {
- if (changed.length) {
- utils.emitStreamChangedEvent(emitter, changed);
- }
- next();
- };
- return reload;
- }
- return browserSyncThroughStream;
- };
- //# sourceMappingURL=stream.js.map
|