@loaders.gl/core
Version:
Framework-independent loaders for 3D graphics formats
53 lines (40 loc) • 1.6 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getTransferList = getTransferList;
exports.getWorkerURL = getWorkerURL;
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _assert = _interopRequireDefault(require("../utils/assert"));
function getTransferList(object) {
var recursive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
var transfers = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
if (!object) {} else if (object instanceof ArrayBuffer) {
transfers.push(object);
} else if (object.buffer && object.buffer instanceof ArrayBuffer) {
transfers.push(object.buffer);
} else if (recursive && (0, _typeof2["default"])(object) === 'object') {
for (var key in object) {
getTransferList(object[key], recursive, transfers);
}
}
return transfers;
}
var workerURLCache = new Map();
function getWorkerURL(workerSource) {
(0, _assert["default"])(typeof workerSource === 'string', 'worker source');
if (workerSource.startsWith('url(') && workerSource.endsWith(')')) {
return workerSource.match(/^url\((.*)\)$/)[1];
}
var workerURL = workerURLCache.get(workerSource);
if (!workerURL) {
var blob = new Blob([workerSource], {
type: 'application/javascript'
});
workerURL = URL.createObjectURL(blob);
workerURLCache.set(workerSource, workerURL);
}
return workerURL;
}
//# sourceMappingURL=worker-utils.js.map