7
7
\************************************************/
8
8
/***/ ( ( module , __unused_webpack_exports , __webpack_require__ ) => {
9
9
10
- /* eslint-env browser */
10
+ /* global document */
11
11
/*
12
12
eslint-disable
13
13
no-console,
14
14
func-names
15
15
*/
16
16
17
+ // eslint-disable-next-line jsdoc/no-restricted-syntax
17
18
/** @typedef {any } TODO */
18
19
19
20
const normalizeUrl = __webpack_require__ ( /*! ./normalize-url */ "../../../src/hmr/normalize-url.js" ) ;
@@ -24,36 +25,40 @@ const noDocument = typeof document === "undefined";
24
25
25
26
const { forEach } = Array . prototype ;
26
27
28
+ // eslint-disable-next-line jsdoc/no-restricted-syntax
27
29
/**
28
- * @param {function } fn
29
- * @param {number } time
30
- * @returns {(function(): void)|* }
30
+ * @param {Function } fn any function
31
+ * @param {number } time time
32
+ * @returns {() => void } wrapped function
31
33
*/
32
34
function debounce ( fn , time ) {
33
35
let timeout = 0 ;
34
36
35
37
return function ( ) {
36
- // @ts -ignore
38
+ // @ts -expect-error
37
39
const self = this ;
38
40
// eslint-disable-next-line prefer-rest-params
39
41
const args = arguments ;
40
-
42
+ // eslint-disable-next-line func-style
41
43
const functionCall = function functionCall ( ) {
42
44
return fn . apply ( self , args ) ;
43
45
} ;
44
46
45
47
clearTimeout ( timeout ) ;
46
48
47
- // @ts -ignore
49
+ // @ts -expect-error
48
50
timeout = setTimeout ( functionCall , time ) ;
49
51
} ;
50
52
}
51
53
54
+ /**
55
+ * @returns {void }
56
+ */
52
57
function noop ( ) { }
53
58
54
59
/**
55
- * @param {TODO } moduleId
56
- * @returns {TODO }
60
+ * @param {string | number } moduleId a module id
61
+ * @returns {TODO } current script url
57
62
*/
58
63
function getCurrentScriptUrl ( moduleId ) {
59
64
let src = srcByModuleId [ moduleId ] ;
@@ -74,8 +79,8 @@ function getCurrentScriptUrl(moduleId) {
74
79
}
75
80
76
81
/**
77
- * @param {string } fileMap
78
- * @returns {null | string[] }
82
+ * @param {string } fileMap file map
83
+ * @returns {null | string[] } normalized files
79
84
*/
80
85
return function ( fileMap ) {
81
86
if ( ! src ) {
@@ -97,15 +102,30 @@ function getCurrentScriptUrl(moduleId) {
97
102
const reg = new RegExp ( `${ filename } \\.js$` , "g" ) ;
98
103
99
104
return normalizeUrl (
100
- src . replace ( reg , `${ mapRule . replace ( / { f i l e N a m e } / g, filename ) } .css` )
105
+ src . replace ( reg , `${ mapRule . replace ( / { f i l e N a m e } / g, filename ) } .css` ) ,
101
106
) ;
102
107
} ) ;
103
108
} ;
104
109
}
105
110
106
111
/**
107
- * @param {TODO } el
108
- * @param {string } [url]
112
+ * @param {string } url URL
113
+ * @returns {boolean } true when URL can be request, otherwise false
114
+ */
115
+ function isUrlRequest ( url ) {
116
+ // An URL is not an request if
117
+
118
+ // It is not http or https
119
+ if ( ! / ^ [ a - z A - Z ] [ a - z A - Z \d + \- . ] * : / . test ( url ) ) {
120
+ return false ;
121
+ }
122
+
123
+ return true ;
124
+ }
125
+
126
+ /**
127
+ * @param {TODO } el html link element
128
+ * @param {string= } url a URL
109
129
*/
110
130
function updateCss ( el , url ) {
111
131
if ( ! url ) {
@@ -127,11 +147,11 @@ function updateCss(el, url) {
127
147
return ;
128
148
}
129
149
150
+ // eslint-disable-next-line unicorn/prefer-includes
130
151
if ( ! url || ! ( url . indexOf ( ".css" ) > - 1 ) ) {
131
152
return ;
132
153
}
133
154
134
- // eslint-disable-next-line no-param-reassign
135
155
el . visited = true ;
136
156
137
157
const newEl = el . cloneNode ( ) ;
@@ -166,34 +186,34 @@ function updateCss(el, url) {
166
186
}
167
187
168
188
/**
169
- * @param {string } href
170
- * @param {TODO } src
171
- * @returns {TODO }
189
+ * @param {string } href href
190
+ * @param {TODO } src src
191
+ * @returns {undefined | string } a reload url
172
192
*/
173
193
function getReloadUrl ( href , src ) {
174
194
let ret ;
175
195
176
- // eslint-disable-next-line no-param-reassign
177
196
href = normalizeUrl ( href ) ;
178
197
179
198
src . some (
180
199
/**
181
- * @param {string } url
200
+ * @param {string } url url
182
201
*/
183
202
// eslint-disable-next-line array-callback-return
184
203
( url ) => {
204
+ // eslint-disable-next-line unicorn/prefer-includes
185
205
if ( href . indexOf ( src ) > - 1 ) {
186
206
ret = url ;
187
207
}
188
- }
208
+ } ,
189
209
) ;
190
210
191
211
return ret ;
192
212
}
193
213
194
214
/**
195
- * @param {string } [ src]
196
- * @returns {boolean }
215
+ * @param {string= } src source
216
+ * @returns {boolean } true when loaded, otherwise false
197
217
*/
198
218
function reloadStyle ( src ) {
199
219
if ( ! src ) {
@@ -210,7 +230,7 @@ function reloadStyle(src) {
210
230
211
231
const url = getReloadUrl ( el . href , src ) ;
212
232
213
- if ( ! isUrlRequest ( url ) ) {
233
+ if ( url && ! isUrlRequest ( url ) ) {
214
234
return ;
215
235
}
216
236
@@ -228,6 +248,9 @@ function reloadStyle(src) {
228
248
return loaded ;
229
249
}
230
250
251
+ /**
252
+ * @returns {void }
253
+ */
231
254
function reloadAll ( ) {
232
255
const elements = document . querySelectorAll ( "link" ) ;
233
256
@@ -241,24 +264,9 @@ function reloadAll() {
241
264
}
242
265
243
266
/**
244
- * @param {string } url
245
- * @returns {boolean }
246
- */
247
- function isUrlRequest ( url ) {
248
- // An URL is not an request if
249
-
250
- // It is not http or https
251
- if ( ! / ^ [ a - z A - Z ] [ a - z A - Z \d + \- . ] * : / . test ( url ) ) {
252
- return false ;
253
- }
254
-
255
- return true ;
256
- }
257
-
258
- /**
259
- * @param {TODO } moduleId
260
- * @param {TODO } options
261
- * @returns {TODO }
267
+ * @param {number | string } moduleId a module id
268
+ * @param {TODO } options options
269
+ * @returns {TODO } wrapper function
262
270
*/
263
271
module . exports = function ( moduleId , options ) {
264
272
if ( noDocument ) {
@@ -269,6 +277,9 @@ module.exports = function (moduleId, options) {
269
277
270
278
const getScriptSrc = getCurrentScriptUrl ( moduleId ) ;
271
279
280
+ /**
281
+ * @returns {void }
282
+ */
272
283
function update ( ) {
273
284
const src = getScriptSrc ( options . filename ) ;
274
285
const reloaded = reloadStyle ( src ) ;
@@ -302,15 +313,13 @@ module.exports = function (moduleId, options) {
302
313
\*****************************************/
303
314
/***/ ( ( module ) => {
304
315
305
- /* eslint-disable */
306
-
307
316
/**
308
- * @param {string[] } pathComponents
309
- * @returns {string }
317
+ * @param {string[] } pathComponents path components
318
+ * @returns {string } normalized url
310
319
*/
311
- function normalizeUrl ( pathComponents ) {
320
+ function normalizeUrlInner ( pathComponents ) {
312
321
return pathComponents
313
- . reduce ( function ( accumulator , item ) {
322
+ . reduce ( ( accumulator , item ) => {
314
323
switch ( item ) {
315
324
case ".." :
316
325
accumulator . pop ( ) ;
@@ -327,24 +336,27 @@ function normalizeUrl(pathComponents) {
327
336
}
328
337
329
338
/**
330
- * @param {string } urlString
331
- * @returns {string }
339
+ * @param {string } urlString url string
340
+ * @returns {string } normalized url string
332
341
*/
333
- module . exports = function ( urlString ) {
342
+ module . exports = function normalizeUrl ( urlString ) {
334
343
urlString = urlString . trim ( ) ;
335
344
336
345
if ( / ^ d a t a : / i. test ( urlString ) ) {
337
346
return urlString ;
338
347
}
339
348
340
- var protocol =
341
- urlString . indexOf ( "//" ) !== - 1 ? urlString . split ( "//" ) [ 0 ] + "//" : "" ;
342
- var components = urlString . replace ( new RegExp ( protocol , "i" ) , "" ) . split ( "/" ) ;
343
- var host = components [ 0 ] . toLowerCase ( ) . replace ( / \. $ / , "" ) ;
349
+ const protocol =
350
+ // eslint-disable-next-line unicorn/prefer-includes
351
+ urlString . indexOf ( "//" ) !== - 1 ? `${ urlString . split ( "//" ) [ 0 ] } //` : "" ;
352
+ const components = urlString
353
+ . replace ( new RegExp ( protocol , "i" ) , "" )
354
+ . split ( "/" ) ;
355
+ const host = components [ 0 ] . toLowerCase ( ) . replace ( / \. $ / , "" ) ;
344
356
345
357
components [ 0 ] = "" ;
346
358
347
- var path = normalizeUrl ( components ) ;
359
+ const path = normalizeUrlInner ( components ) ;
348
360
349
361
return protocol + host + path ;
350
362
} ;
0 commit comments