UNPKG

worker-loader

Version:
39 lines (33 loc) 1.23 kB
"use strict"; /* eslint-env browser */ /* eslint-disable no-undef, no-use-before-define, new-cap */ module.exports = function (content, workerConstructor, workerOptions, url) { var globalScope = self || window; try { try { var blob; try { // New API blob = new globalScope.Blob([content]); } catch (e) { // BlobBuilder = Deprecated, but widely implemented var BlobBuilder = globalScope.BlobBuilder || globalScope.WebKitBlobBuilder || globalScope.MozBlobBuilder || globalScope.MSBlobBuilder; blob = new BlobBuilder(); blob.append(content); blob = blob.getBlob(); } var URL = globalScope.URL || globalScope.webkitURL; var objectURL = URL.createObjectURL(blob); var worker = new globalScope[workerConstructor](objectURL, workerOptions); URL.revokeObjectURL(objectURL); return worker; } catch (e) { return new globalScope[workerConstructor]("data:application/javascript,".concat(encodeURIComponent(content)), workerOptions); } } catch (e) { if (!url) { throw Error("Inline worker is not supported"); } return new globalScope[workerConstructor](url, workerOptions); } };