mirror of
https://github.com/pure-admin/vue-pure-admin.git
synced 2025-11-21 14:13:36 +08:00
43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
const kDefaultsOptions = {
|
|
inline: true,
|
|
preserveSource: false,
|
|
enableUnicode: false,
|
|
targetPlatform: 'browser',
|
|
};
|
|
|
|
function getFactoryFuncName(options) {
|
|
if (options.inline) {
|
|
if (options.preserveSource) {
|
|
return 'createInlineWorkerFactory';
|
|
}
|
|
return 'createBase64WorkerFactory';
|
|
}
|
|
return 'createURLWorkerFactory';
|
|
}
|
|
|
|
function getArgsString(source, sourcemap, options) {
|
|
if (options.inline) {
|
|
const sourcemapArg = sourcemap ? `'${sourcemap.toUrl()}'` : 'null';
|
|
if (options.preserveSource) {
|
|
return `${source.substring(0, source.length - 1)}, ${sourcemapArg}`;
|
|
}
|
|
const sourceArg = Buffer.from(source, options.enableUnicode ? 'utf16le' : 'utf8').toString('base64');
|
|
return `'${sourceArg}', ${sourcemapArg}, ${options.enableUnicode.toString()}`;
|
|
}
|
|
return `'${source}'`;
|
|
}
|
|
|
|
function buildWorkerCode(source, sourcemap = null, optionsArg = kDefaultsOptions) {
|
|
const options = Object.assign({}, kDefaultsOptions, optionsArg);
|
|
const factoryFuncName = getFactoryFuncName(options);
|
|
const argsString = getArgsString(source, sourcemap, options);
|
|
return `
|
|
/* eslint-disable */
|
|
import {${factoryFuncName}} from '\0rollup-plugin-web-worker-loader::helper::${options.targetPlatform}::${factoryFuncName}';
|
|
var WorkerFactory = ${factoryFuncName}(${argsString});
|
|
export default WorkerFactory;
|
|
/* eslint-enable */\n`;
|
|
}
|
|
|
|
module.exports = buildWorkerCode;
|