2
2
/* eslint-disable no-undef, no-use-before-define, new-cap */
3
3
4
4
module . exports = ( content , workerConstructor , workerOptions , url ) => {
5
+ const globalScope = self || window ;
5
6
try {
6
7
try {
7
8
let blob ;
8
9
9
10
try {
10
11
// New API
11
- blob = new window . Blob ( [ content ] ) ;
12
+ blob = new globalScope . Blob ( [ content ] ) ;
12
13
} catch ( e ) {
13
14
// BlobBuilder = Deprecated, but widely implemented
14
15
const BlobBuilder =
15
- window . BlobBuilder ||
16
- window . WebKitBlobBuilder ||
17
- window . MozBlobBuilder ||
18
- window . MSBlobBuilder ;
16
+ globalScope . BlobBuilder ||
17
+ globalScope . WebKitBlobBuilder ||
18
+ globalScope . MozBlobBuilder ||
19
+ globalScope . MSBlobBuilder ;
19
20
20
21
blob = new BlobBuilder ( ) ;
21
22
@@ -24,15 +25,18 @@ module.exports = (content, workerConstructor, workerOptions, url) => {
24
25
blob = blob . getBlob ( ) ;
25
26
}
26
27
27
- const URL = window . URL || window . webkitURL ;
28
+ const URL = globalScope . URL || globalScope . webkitURL ;
28
29
const objectURL = URL . createObjectURL ( blob ) ;
29
- const worker = new window [ workerConstructor ] ( objectURL , workerOptions ) ;
30
+ const worker = new globalScope [ workerConstructor ] (
31
+ objectURL ,
32
+ workerOptions
33
+ ) ;
30
34
31
35
URL . revokeObjectURL ( objectURL ) ;
32
36
33
37
return worker ;
34
38
} catch ( e ) {
35
- return new window [ workerConstructor ] (
39
+ return new globalScope [ workerConstructor ] (
36
40
`data:application/javascript,${ encodeURIComponent ( content ) } ` ,
37
41
workerOptions
38
42
) ;
@@ -42,6 +46,6 @@ module.exports = (content, workerConstructor, workerOptions, url) => {
42
46
throw Error ( "Inline worker is not supported" ) ;
43
47
}
44
48
45
- return new window [ workerConstructor ] ( url , workerOptions ) ;
49
+ return new globalScope [ workerConstructor ] ( url , workerOptions ) ;
46
50
}
47
51
} ;
0 commit comments