1
- const normalizeUrl = require ( 'normalize-url' ) ;
1
+ /* global document, window */
2
+ /* eslint func-names: 0 */
3
+ /* eslint no-var: 0 */
4
+ /* eslint vars-on-top: 0 */
5
+ /* eslint prefer-arrow-func: 0 */
6
+ /* eslint prefer-rest-params: 0 */
7
+ /* eslint prefer-arrow-callback: 0 */
2
8
3
- const srcByModuleId = Object . create ( null ) ;
9
+ var normalizeUrl = require ( 'normalize-url' ) ;
4
10
5
- const noDocument = typeof document === 'undefined' ;
11
+ var srcByModuleId = Object . create ( null ) ;
12
+
13
+ var noDocument = typeof document === 'undefined' ;
14
+
15
+ var forEach = Array . prototype . forEach ;
6
16
7
17
function debounce ( fn , time ) {
8
- let timeout ;
18
+ var timeout = 0 ;
9
19
10
20
// eslint-disable-next-line func-names
11
21
return function ( ) {
12
- const functionCall = ( ) => fn . apply ( this , arguments ) ;
22
+ var self = this ;
23
+ var args = arguments ;
24
+
25
+ // eslint-disable-next-line prefer-rest-params
26
+ var functionCall = function functionCall ( ) {
27
+ return fn . apply ( self , args ) ;
28
+ } ;
13
29
14
30
clearTimeout ( timeout ) ;
15
31
timeout = setTimeout ( functionCall , time ) ;
16
32
} ;
17
33
}
18
34
19
- const forEach = Array . prototype . forEach ;
20
-
21
35
function noop ( ) { }
22
36
23
37
function getCurrentScriptUrl ( moduleId ) {
24
- let src = srcByModuleId [ moduleId ] ;
38
+ var src = srcByModuleId [ moduleId ] ;
25
39
26
40
if ( ! src ) {
27
41
if ( document . currentScript ) {
28
42
src = document . currentScript . src ;
29
43
} else {
30
- const scripts = document . getElementsByTagName ( 'script' ) ;
31
- const lastScriptTag = scripts [ scripts . length - 1 ] ;
44
+ var scripts = document . getElementsByTagName ( 'script' ) ;
45
+ var lastScriptTag = scripts [ scripts . length - 1 ] ;
32
46
33
47
if ( lastScriptTag ) {
34
48
src = lastScriptTag . src ;
@@ -41,16 +55,16 @@ function getCurrentScriptUrl(moduleId) {
41
55
if ( ! src ) {
42
56
return null ;
43
57
}
44
- const splitResult = src . split ( / ( [ ^ \\ / ] + ) \. j s $ / ) ;
45
- const filename = splitResult && splitResult [ 1 ] ;
58
+ var splitResult = src . split ( / ( [ ^ \\ / ] + ) \. j s $ / ) ;
59
+ var filename = splitResult && splitResult [ 1 ] ;
46
60
if ( ! filename ) {
47
61
return [ src . replace ( '.js' , '.css' ) ] ;
48
62
}
49
63
if ( ! fileMap ) {
50
64
return [ src . replace ( '.js' , '.css' ) ] ;
51
65
}
52
- return fileMap . split ( ',' ) . map ( mapRule => {
53
- const reg = new RegExp ( `${ filename } \\.js$` , 'g' ) ;
66
+ return fileMap . split ( ',' ) . map ( function ( mapRule ) {
67
+ var reg = new RegExp ( `${ filename } \\.js$` , 'g' ) ;
54
68
return normalizeUrl (
55
69
src . replace ( reg , `${ mapRule . replace ( / { f i l e N a m e } / g, filename ) } .css` ) ,
56
70
{ stripWWW : false }
@@ -71,16 +85,16 @@ function updateCss(el, url) {
71
85
if ( ! url || ! ( url . indexOf ( '.css' ) > - 1 ) ) return ;
72
86
73
87
el . visited = true ;
74
- const newEl = el . cloneNode ( ) ;
88
+ var newEl = el . cloneNode ( ) ; // eslint-disable-line vars-on-top
75
89
76
90
newEl . isLoaded = false ;
77
91
78
- newEl . addEventListener ( 'load' , ( ) => {
92
+ newEl . addEventListener ( 'load' , function ( ) {
79
93
newEl . isLoaded = true ;
80
94
el . parentNode . removeChild ( el ) ;
81
95
} ) ;
82
96
83
- newEl . addEventListener ( 'error' , ( ) => {
97
+ newEl . addEventListener ( 'error' , function ( ) {
84
98
newEl . isLoaded = true ;
85
99
el . parentNode . removeChild ( el ) ;
86
100
} ) ;
@@ -90,10 +104,10 @@ function updateCss(el, url) {
90
104
}
91
105
92
106
function getReloadUrl ( href , src ) {
107
+ var ret ;
93
108
href = normalizeUrl ( href , { stripWWW : false } ) ;
94
- let ret ;
95
109
// eslint-disable-next-line array-callback-return
96
- src . some ( url => {
110
+ src . some ( function ( url ) {
97
111
if ( href . indexOf ( src ) > - 1 ) {
98
112
ret = url ;
99
113
}
@@ -102,13 +116,14 @@ function getReloadUrl(href, src) {
102
116
}
103
117
104
118
function reloadStyle ( src ) {
105
- const elements = document . querySelectorAll ( 'link' ) ;
106
- let loaded = false ;
119
+ var elements = document . querySelectorAll ( 'link' ) ;
120
+ var loaded = false ;
121
+
122
+ forEach . call ( elements , function ( el ) {
123
+ var url = getReloadUrl ( el . href , src ) ;
107
124
108
- forEach . call ( elements , el => {
109
125
if ( el . visited === true ) return ;
110
126
111
- const url = getReloadUrl ( el . href , src ) ;
112
127
if ( url ) {
113
128
updateCss ( el , url ) ;
114
129
loaded = true ;
@@ -119,8 +134,8 @@ function reloadStyle(src) {
119
134
}
120
135
121
136
function reloadAll ( ) {
122
- const elements = document . querySelectorAll ( 'link' ) ;
123
- forEach . call ( elements , el => {
137
+ var elements = document . querySelectorAll ( 'link' ) ;
138
+ forEach . call ( elements , function ( el ) {
124
139
if ( el . visited === true ) return ;
125
140
updateCss ( el ) ;
126
141
} ) ;
@@ -131,11 +146,12 @@ module.exports = function(moduleId, options) {
131
146
return noop ;
132
147
}
133
148
134
- const getScriptSrc = getCurrentScriptUrl ( moduleId ) ;
149
+ // eslint-disable-next-line vars-on-top
150
+ var getScriptSrc = getCurrentScriptUrl ( moduleId ) ;
135
151
136
152
function update ( ) {
137
- const src = getScriptSrc ( options . filename ) ;
138
- const reloaded = reloadStyle ( src ) ;
153
+ var src = getScriptSrc ( options . filename ) ;
154
+ var reloaded = reloadStyle ( src ) ;
139
155
if ( reloaded && ! options . reloadAll ) {
140
156
console . log ( '[HMR] css reload %s' , src . join ( ' ' ) ) ;
141
157
} else {
0 commit comments