UNPKG

workerize-loader-5

Version:

Automatically move a module into a Web Worker (Webpack loader)

36 lines (32 loc) 979 B
/* global __webpack_exports__ */ function workerSetup() { addEventListener('message', (e) => { let { type, method, id, params } = e.data, f, p; if (type==='RPC' && method) { if ((f = __webpack_exports__[method])) { p = Promise.resolve().then( () => f.apply(__webpack_exports__, params) ); } else { p = Promise.reject('No such method'); } p.then(result => { postMessage({ type: 'RPC', id, result }); }) .catch(e => { let error = { message: e }; if (e.stack) { error.message = e.message; error.stack = e.stack; error.name = e.name; } postMessage({ type: 'RPC', id, error }); }); } }); postMessage({ type: 'RPC', method: 'ready' }); } const workerScript = '\n' + Function.prototype.toString.call(workerSetup).replace(/(^.*\{|\}.*$|\n\s*)/g, ''); export default function rpcWorkerLoader(content, sourceMap) { const callback = this.async(); callback(null, content + workerScript, sourceMap); }