rollup-plugin-web-worker-loader
Version:
Rollup plugin to handle Web Workers
32 lines (28 loc) • 1.27 kB
JavaScript
function decodeBase64(base64, enableUnicode) {
var binaryString = atob(base64);
if (enableUnicode) {
var binaryView = new Uint8Array(binaryString.length);
for (var i = 0, n = binaryString.length; i < n; ++i) {
binaryView[i] = binaryString.charCodeAt(i);
}
const decoder = new TextDecoder("utf-16le")
return decoder.decode(new Uint16Array(binaryView.buffer));
}
return binaryString;
}
function createURL(base64, sourcemapArg, enableUnicodeArg) {
var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;
var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;
var source = decodeBase64(base64, enableUnicode);
var start = source.indexOf('\n', 10) + 1;
var body = source.substring(start) + (sourcemap ? '\/\/# sourceMappingURL=' + sourcemap : '');
var blob = new Blob([body], { type: 'application/javascript' });
return URL.createObjectURL(blob);
}
export function createBase64PaintWorkletFactory(base64, sourcemapArg, enableUnicodeArg) {
var url;
return function PaintWorkletFactory(options) {
url = url || createURL(base64, sourcemapArg, enableUnicodeArg);
return CSS.paintWorklet.addModule(url, options);
};
}