isoworker
Version:
Isomorphic workerization with dependencies
24 lines (23 loc) • 791 B
JavaScript
;
var wk = function (c, msg, transfer, cb) {
var w;
try {
var url = URL.createObjectURL(new Blob([c], { type: 'text/javascript' }));
w = new Worker(url);
URL.revokeObjectURL(url);
}
catch (e) {
w = new Worker('data:application/javascript;charset=UTF-8,' + encodeURI(c));
}
w.postMessage(msg, transfer);
w.addEventListener('message', function (ev) { return cb(null, ev.data); });
w.addEventListener('error', function (ev) { return cb(ev.error, null); });
return w;
};
wk.t = [ArrayBuffer, MessagePort];
wk.c = [Blob, File, FileList, ImageData];
if (typeof ImageBitmap != 'undefined')
wk.t.push(ImageBitmap);
if (typeof OffscreenCanvas != 'undefined')
wk.t.push(OffscreenCanvas);
exports["default"] = wk;