UNPKG

@loaders.gl/worker-utils

Version:

Utilities for running tasks on worker threads

35 lines 1.2 kB
import { assert } from '../env-utils/assert'; const workerURLCache = new Map(); export function getLoadableWorkerURL(props) { assert(props.source && !props.url || !props.source && props.url); let workerURL = workerURLCache.get(props.source || props.url); if (!workerURL) { if (props.url) { workerURL = getLoadableWorkerURLFromURL(props.url); workerURLCache.set(props.url, workerURL); } if (props.source) { workerURL = getLoadableWorkerURLFromSource(props.source); workerURLCache.set(props.source, workerURL); } } assert(workerURL); return workerURL; } function getLoadableWorkerURLFromURL(url) { if (!url.startsWith('http')) { return url; } const workerSource = buildScriptSource(url); return getLoadableWorkerURLFromSource(workerSource); } function getLoadableWorkerURLFromSource(workerSource) { const blob = new Blob([workerSource], { type: 'application/javascript' }); return URL.createObjectURL(blob); } function buildScriptSource(workerUrl) { return "try {\n importScripts('".concat(workerUrl, "');\n} catch (error) {\n console.error(error);\n throw error;\n}"); } //# sourceMappingURL=get-loadable-worker-url.js.map