UNPKG

1.23 kBJavaScriptView Raw
1"use strict";
2
3/* eslint-env browser */
4
5/* eslint-disable no-undef, no-use-before-define, new-cap */
6module.exports = function (content, workerConstructor, workerOptions, url) {
7 var globalScope = self || window;
8
9 try {
10 try {
11 var blob;
12
13 try {
14 // New API
15 blob = new globalScope.Blob([content]);
16 } catch (e) {
17 // BlobBuilder = Deprecated, but widely implemented
18 var BlobBuilder = globalScope.BlobBuilder || globalScope.WebKitBlobBuilder || globalScope.MozBlobBuilder || globalScope.MSBlobBuilder;
19 blob = new BlobBuilder();
20 blob.append(content);
21 blob = blob.getBlob();
22 }
23
24 var URL = globalScope.URL || globalScope.webkitURL;
25 var objectURL = URL.createObjectURL(blob);
26 var worker = new globalScope[workerConstructor](objectURL, workerOptions);
27 URL.revokeObjectURL(objectURL);
28 return worker;
29 } catch (e) {
30 return new globalScope[workerConstructor]("data:application/javascript,".concat(encodeURIComponent(content)), workerOptions);
31 }
32 } catch (e) {
33 if (!url) {
34 throw Error("Inline worker is not supported");
35 }
36
37 return new globalScope[workerConstructor](url, workerOptions);
38 }
39};
\No newline at end of file