@@ -420,10 +420,14 @@ BrowserSync.prototype.addMiddleware = function (route, handle, opts) {
420420 } ;
421421
422422 if ( opts . override ) {
423- return bs . app . stack . unshift ( entry ) ;
423+ entry . override = true ;
424424 }
425425
426- bs . _addMiddlewareToStack ( entry ) ;
426+ bs . options = bs . options . update ( 'middleware' , function ( mw ) {
427+ return mw . concat ( entry ) ;
428+ } ) ;
429+
430+ bs . resetMiddlewareStack ( ) ;
427431} ;
428432
429433/**
@@ -439,17 +443,15 @@ BrowserSync.prototype.removeMiddleware = function (id) {
439443 return ;
440444 }
441445
442- bs . app . stack = bs . app . stack . filter ( function ( item ) {
443- if ( ! item . id ) {
444- return true ;
445- }
446-
447- return item . id !== id ;
446+ bs . options = bs . options . update ( 'middleware' , function ( mw ) {
447+ return mw . filter ( function ( mw ) {
448+ return mw . id !== id ;
449+ } ) ;
448450 } ) ;
449-
450- return bs . app ;
451451} ;
452452
453+
454+
453455/**
454456 * Middleware for socket connection (external usage)
455457 * @param opts
@@ -586,41 +588,36 @@ BrowserSync.prototype.setMany = function (fn, opts) {
586588 return this . options ;
587589} ;
588590
589- /**
590- * Remove a rewrite rule by id
591- */
592- BrowserSync . prototype . removeRewriteRule = function ( id ) {
591+ BrowserSync . prototype . addRewriteRule = function ( rule ) {
593592 var bs = this ;
594593
595- bs . setRewriteRules ( bs . rewriteRules . filter ( fn ) ) ;
594+ bs . options = bs . options . update ( 'rewriteRules' , function ( rules ) {
595+ return rules . concat ( rule ) ;
596+ } ) ;
596597
597- function fn ( item ) {
598- if ( item . id ) {
599- return item . id !== id ;
600- }
601- return true ;
602- }
598+ bs . resetMiddlewareStack ( ) ;
603599} ;
604600
605- /**
606- * Add a new rewrite rule to the stack
607- * @param {Object } rule
608- */
609- BrowserSync . prototype . addRewriteRule = function ( rule ) {
601+ BrowserSync . prototype . removeRewriteRule = function ( id ) {
610602 var bs = this ;
611-
612- bs . setRewriteRules ( bs . rewriteRules . concat ( rule ) ) ;
603+ bs . options = bs . options . update ( 'rewriteRules' , function ( rules ) {
604+ return rules . filter ( function ( rule ) {
605+ return rule . id !== id ;
606+ } ) ;
607+ } ) ;
608+ bs . resetMiddlewareStack ( ) ;
613609} ;
614610
615611/**
616- * Completely replace all rules
617- * @param {Array } rules
612+ * Add a new rewrite rule to the stack
613+ * @param {Object } rule
618614 */
619- BrowserSync . prototype . setRewriteRules = function ( rules ) {
615+ BrowserSync . prototype . resetMiddlewareStack = function ( ) {
616+
620617 var bs = this ;
618+ var middlewares = require ( './server/utils' ) . getMiddlewares ( bs , bs . options ) ;
621619
622- bs . rewriteRules = rules ;
623- bs . snippetMw . opts . rules = rules ;
620+ bs . app . stack = middlewares ;
624621} ;
625622
626623/**
0 commit comments