1- "use strict" ;
2- var events = require ( "./events" ) ;
3- var utils = require ( "./browser.utils" ) ;
4- var emitter = require ( "./emitter" ) ;
5- var sync = exports ;
6-
7- var options = {
8- tagNames : {
9- css : "link" ,
10- jpg : "img" ,
11- jpeg : "img" ,
12- png : "img" ,
13- svg : "img" ,
14- gif : "img" ,
15- js : "script"
16- } ,
17- attrs : {
18- link : "href" ,
19- img : "src" ,
20- script : "src"
21- } ,
1+ import { Reloader } from "../vendor/Reloader" ;
2+ import { Timer } from "../vendor/Timer" ;
3+
4+ const events = require ( "./events" ) ;
5+ const utils = require ( "./browser.utils" ) ;
6+ const emitter = require ( "./emitter" ) ;
7+ const sync = exports ;
8+ const nanlogger = require ( "nanologger" ) ;
9+ const log = nanlogger ( "Browsersync" , { colors : { magenta : "#0F2634" } } ) ;
10+ const reloader = new Reloader ( window , log , Timer ) ;
11+
12+ const options = {
2213 blacklist : [
2314 // never allow .map files through
2415 function ( incoming ) {
@@ -27,21 +18,15 @@ var options = {
2718 ]
2819} ;
2920
30- var hiddenElem ;
31- var OPT_PATH = "codeSync" ;
32-
33- var current = function ( ) {
21+ const OPT_PATH = "codeSync" ;
22+ const current = function ( ) {
3423 return window . location . pathname ;
3524} ;
3625
3726/**
3827 * @param {BrowserSync } bs
3928 */
4029sync . init = function ( bs ) {
41- if ( bs . options . tagNames ) {
42- options . tagNames = bs . options . tagNames ;
43- }
44-
4530 if ( bs . options . scrollRestoreTechnique === "window.name" ) {
4631 sync . saveScrollInName ( emitter ) ;
4732 } else {
@@ -138,77 +123,6 @@ sync.saveScrollInCookie = function($window, $document) {
138123 emitter . on ( "browser:hardReload" , utils . saveScrollPosition ) ;
139124} ;
140125
141- /**
142- * @param {string } search
143- * @param {string } key
144- * @param {string } suffix
145- */
146- sync . updateSearch = function ( search , key , suffix ) {
147- if ( search === "" ) {
148- return "?" + suffix ;
149- }
150-
151- return (
152- "?" +
153- search
154- . slice ( 1 )
155- . split ( "&" )
156- . map ( function ( item ) {
157- return item . split ( "=" ) ;
158- } )
159- . filter ( function ( tuple ) {
160- return tuple [ 0 ] !== key ;
161- } )
162- . map ( function ( item ) {
163- return [ item [ 0 ] , item [ 1 ] ] . join ( "=" ) ;
164- } )
165- . concat ( suffix )
166- . join ( "&" )
167- ) ;
168- } ;
169-
170- /**
171- * @param elem
172- * @param attr
173- * @param options
174- * @returns {{elem: HTMLElement, timeStamp: number} }
175- */
176- sync . swapFile = function ( elem , attr , options ) {
177- var currentValue = elem [ attr ] ;
178- var timeStamp = new Date ( ) . getTime ( ) ;
179- var key = "rel" ;
180- var suffix = key + "=" + timeStamp ;
181- var anchor = utils . getLocation ( currentValue ) ;
182- var search = sync . updateSearch ( anchor . search , key , suffix ) ;
183-
184- if ( options . timestamps === false ) {
185- elem [ attr ] = anchor . href ;
186- } else {
187- elem [ attr ] = anchor . href . split ( "?" ) [ 0 ] + search ;
188- }
189-
190- var body = document . body ;
191-
192- setTimeout ( function ( ) {
193- if ( ! hiddenElem ) {
194- hiddenElem = document . createElement ( "DIV" ) ;
195- body . appendChild ( hiddenElem ) ;
196- } else {
197- hiddenElem . style . display = "none" ;
198- hiddenElem . style . display = "block" ;
199- }
200- } , 200 ) ;
201-
202- return {
203- elem : elem ,
204- timeStamp : timeStamp
205- } ;
206- } ;
207-
208- sync . getFilenameOnly = function ( url ) {
209- return / ^ [ ^ \? ] + (? = \? ) / . exec ( url ) ;
210- } ;
211-
212126/**
213127 * @param {BrowserSync } bs
214128 * @returns {* }
@@ -221,9 +135,8 @@ sync.reload = function(bs) {
221135 if ( ! bs . canSync ( { url : current ( ) } , OPT_PATH ) ) {
222136 return ;
223137 }
224- var transformedElem ;
138+
225139 var options = bs . options ;
226- var emitter = bs . emitter ;
227140
228141 if ( data . url || ! options . injectChanges ) {
229142 sync . reloadBrowser ( true ) ;
@@ -234,48 +147,11 @@ sync.reload = function(bs) {
234147 return ;
235148 }
236149
237- var domData = sync . getElems ( data . ext ) ;
238- var elems = sync . getMatches (
239- domData . elems ,
240- data . basename ,
241- domData . attr
242- ) ;
243-
244- if ( elems . length && options . notify ) {
245- emitter . emit ( "notify" , {
246- message : "Injected: " + data . basename
247- } ) ;
248- }
249-
250- for ( var i = 0 , n = elems . length ; i < n ; i += 1 ) {
251- transformedElem = sync . swapFile (
252- elems [ i ] ,
253- domData . attr ,
254- options
255- ) ;
256- }
150+ reloader . reload ( data . path , { liveCSS : true } ) ;
257151 }
258-
259- return transformedElem ;
260152 } ;
261153} ;
262154
263- /**
264- * @param fileExtension
265- * @returns {* }
266- */
267- sync . getTagName = function ( fileExtension ) {
268- return options . tagNames [ fileExtension ] ;
269- } ;
270-
271- /**
272- * @param tagName
273- * @returns {* }
274- */
275- sync . getAttr = function ( tagName ) {
276- return options . attrs [ tagName ] ;
277- } ;
278-
279155/**
280156 * @param incoming
281157 * @returns {boolean }
@@ -286,43 +162,6 @@ sync.isBlacklisted = function(incoming) {
286162 } ) ;
287163} ;
288164
289- /**
290- * @param elems
291- * @param url
292- * @param attr
293- * @returns {Array }
294- */
295- sync . getMatches = function ( elems , url , attr ) {
296- if ( url [ 0 ] === "*" ) {
297- return elems ;
298- }
299-
300- var matches = [ ] ;
301- var urlMatcher = new RegExp ( "(^|/)" + url ) ;
302-
303- for ( var i = 0 , len = elems . length ; i < len ; i += 1 ) {
304- if ( urlMatcher . test ( elems [ i ] [ attr ] ) ) {
305- matches . push ( elems [ i ] ) ;
306- }
307- }
308-
309- return matches ;
310- } ;
311-
312- /**
313- * @param fileExtension
314- * @returns {{elems: NodeList, attr: *} }
315- */
316- sync . getElems = function ( fileExtension ) {
317- var tagName = sync . getTagName ( fileExtension ) ;
318- var attr = sync . getAttr ( tagName ) ;
319-
320- return {
321- elems : document . getElementsByTagName ( tagName ) ,
322- attr : attr
323- } ;
324- } ;
325-
326165/**
327166 * @param confirm
328167 */
0 commit comments