UNPKG

@loaders.gl/core

Version:

Framework-independent loaders for 3D graphics formats

1,157 lines (911 loc) 114 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else { var a = factory(); for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; } })(window, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = "./src/bundle.js"); /******/ }) /************************************************************************/ /******/ ({ /***/ "../../node_modules/process/browser.js": /*!************************************************************************!*\ !*** /Users/xintongxia/dev/loaders.gl/node_modules/process/browser.js ***! \************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { // shim for using process in browser var process = module.exports = {}; // cached from whatever global is present so that test runners that stub it // don't break things. But we need to wrap it in a try catch in case it is // wrapped in strict mode code which doesn't define any globals. It's inside a // function because try/catches deoptimize in certain engines. var cachedSetTimeout; var cachedClearTimeout; function defaultSetTimout() { throw new Error('setTimeout has not been defined'); } function defaultClearTimeout () { throw new Error('clearTimeout has not been defined'); } (function () { try { if (typeof setTimeout === 'function') { cachedSetTimeout = setTimeout; } else { cachedSetTimeout = defaultSetTimout; } } catch (e) { cachedSetTimeout = defaultSetTimout; } try { if (typeof clearTimeout === 'function') { cachedClearTimeout = clearTimeout; } else { cachedClearTimeout = defaultClearTimeout; } } catch (e) { cachedClearTimeout = defaultClearTimeout; } } ()) function runTimeout(fun) { if (cachedSetTimeout === setTimeout) { //normal enviroments in sane situations return setTimeout(fun, 0); } // if setTimeout wasn't available but was latter defined if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { cachedSetTimeout = setTimeout; return setTimeout(fun, 0); } try { // when when somebody has screwed with setTimeout but no I.E. maddness return cachedSetTimeout(fun, 0); } catch(e){ try { // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally return cachedSetTimeout.call(null, fun, 0); } catch(e){ // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error return cachedSetTimeout.call(this, fun, 0); } } } function runClearTimeout(marker) { if (cachedClearTimeout === clearTimeout) { //normal enviroments in sane situations return clearTimeout(marker); } // if clearTimeout wasn't available but was latter defined if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { cachedClearTimeout = clearTimeout; return clearTimeout(marker); } try { // when when somebody has screwed with setTimeout but no I.E. maddness return cachedClearTimeout(marker); } catch (e){ try { // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally return cachedClearTimeout.call(null, marker); } catch (e){ // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. // Some versions of I.E. have different rules for clearTimeout vs setTimeout return cachedClearTimeout.call(this, marker); } } } var queue = []; var draining = false; var currentQueue; var queueIndex = -1; function cleanUpNextTick() { if (!draining || !currentQueue) { return; } draining = false; if (currentQueue.length) { queue = currentQueue.concat(queue); } else { queueIndex = -1; } if (queue.length) { drainQueue(); } } function drainQueue() { if (draining) { return; } var timeout = runTimeout(cleanUpNextTick); draining = true; var len = queue.length; while(len) { currentQueue = queue; queue = []; while (++queueIndex < len) { if (currentQueue) { currentQueue[queueIndex].run(); } } queueIndex = -1; len = queue.length; } currentQueue = null; draining = false; runClearTimeout(timeout); } process.nextTick = function (fun) { var args = new Array(arguments.length - 1); if (arguments.length > 1) { for (var i = 1; i < arguments.length; i++) { args[i - 1] = arguments[i]; } } queue.push(new Item(fun, args)); if (queue.length === 1 && !draining) { runTimeout(drainQueue); } }; // v8 likes predictible objects function Item(fun, array) { this.fun = fun; this.array = array; } Item.prototype.run = function () { this.fun.apply(null, this.array); }; process.title = 'browser'; process.browser = true; process.env = {}; process.argv = []; process.version = ''; // empty string to avoid regexp issues process.versions = {}; function noop() {} process.on = noop; process.addListener = noop; process.once = noop; process.off = noop; process.removeListener = noop; process.removeAllListeners = noop; process.emit = noop; process.prependListener = noop; process.prependOnceListener = noop; process.listeners = function (name) { return [] } process.binding = function (name) { throw new Error('process.binding is not supported'); }; process.cwd = function () { return '/' }; process.chdir = function (dir) { throw new Error('process.chdir is not supported'); }; process.umask = function() { return 0; }; /***/ }), /***/ "../../node_modules/webpack/buildin/global.js": /*!***********************************!*\ !*** (webpack)/buildin/global.js ***! \***********************************/ /*! no static exports found */ /***/ (function(module, exports) { var g; // This works in non-strict mode g = (function() { return this; })(); try { // This works if eval is allowed (see CSP) g = g || new Function("return this")(); } catch (e) { // This works if the window reference is available if (typeof window === "object") g = window; } // g can still be undefined, but nothing to do about it... // We return undefined, instead of nothing here, so it's // easier to handle this case. if(!global) { ...} module.exports = g; /***/ }), /***/ "./src/bundle.js": /*!***********************!*\ !*** ./src/bundle.js ***! \***********************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global) {/* global window, global */ const moduleExports = __webpack_require__(/*! ./index */ "./src/index.js"); const _global = typeof window === 'undefined' ? global : window; _global.loaders = _global.loaders || {}; module.exports = Object.assign(_global.loaders, moduleExports); /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/global.js */ "../../node_modules/webpack/buildin/global.js"))) /***/ }), /***/ "./src/index.js": /*!**********************!*\ !*** ./src/index.js ***! \**********************/ /*! exports provided: path, setPathPrefix, getPathPrefix, resolvePath, fetchFile, readFileSync, writeFile, writeFileSync, _getErrorMessageFromResponseSync, _getErrorMessageFromResponse, registerLoaders, parse, parseSync, parseInBatches, parseInBatchesSync, load, loadInBatches, encode, encodeSync, encodeInBatches, save, saveSync, isPromise, isIterable, isAsyncIterable, isIterator, isFetchResponse, isReadableStream, isWritableStream, toArrayBuffer, getStreamIterator, forEach, concatenateAsyncIterator, lineAsyncIterator, textDecoderAsyncIterator, numberedLineAsyncIterator, isBrowser, self, window, global, document, assert, _selectLoader, _WorkerThread, _WorkerFarm, _WorkerPool, _fetchProgress, _unregisterLoaders, TextEncoder, TextDecoder, createReadStream, parseFile, parseFileSync, loadFile */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextEncoder", function() { return TextEncoder; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextDecoder", function() { return TextDecoder; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createReadStream", function() { return createReadStream; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseFile", function() { return parseFile; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseFileSync", function() { return parseFileSync; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadFile", function() { return loadFile; }); /* harmony import */ var _lib_parse__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/parse */ "./src/lib/parse.js"); /* harmony import */ var _lib_parse_sync__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/parse-sync */ "./src/lib/parse-sync.js"); /* harmony import */ var _lib_fetch_fetch_file__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lib/fetch/fetch-file */ "./src/lib/fetch/fetch-file.js"); /* harmony import */ var _lib_load__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./lib/load */ "./src/lib/load.js"); /* harmony import */ var _lib_fetch_file_aliases__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./lib/fetch/file-aliases */ "./src/lib/fetch/file-aliases.js"); /* harmony import */ var _utils_globals__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/globals */ "./src/utils/globals.js"); /* harmony import */ var _lib_path_path__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./lib/path/path */ "./src/lib/path/path.js"); /* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "path", function() { return _lib_path_path__WEBPACK_IMPORTED_MODULE_6__; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setPathPrefix", function() { return _lib_fetch_file_aliases__WEBPACK_IMPORTED_MODULE_4__["setPathPrefix"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getPathPrefix", function() { return _lib_fetch_file_aliases__WEBPACK_IMPORTED_MODULE_4__["getPathPrefix"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resolvePath", function() { return _lib_fetch_file_aliases__WEBPACK_IMPORTED_MODULE_4__["resolvePath"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fetchFile", function() { return _lib_fetch_fetch_file__WEBPACK_IMPORTED_MODULE_2__["fetchFile"]; }); /* harmony import */ var _lib_fetch_read_file__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./lib/fetch/read-file */ "./src/lib/fetch/read-file.js"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "readFileSync", function() { return _lib_fetch_read_file__WEBPACK_IMPORTED_MODULE_7__["readFileSync"]; }); /* harmony import */ var _lib_fetch_write_file__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./lib/fetch/write-file */ "./src/lib/fetch/write-file.js"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "writeFile", function() { return _lib_fetch_write_file__WEBPACK_IMPORTED_MODULE_8__["writeFile"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "writeFileSync", function() { return _lib_fetch_write_file__WEBPACK_IMPORTED_MODULE_8__["writeFileSync"]; }); /* harmony import */ var _lib_fetch_fetch_error_message__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./lib/fetch/fetch-error-message */ "./src/lib/fetch/fetch-error-message.js"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "_getErrorMessageFromResponseSync", function() { return _lib_fetch_fetch_error_message__WEBPACK_IMPORTED_MODULE_9__["getErrorMessageFromResponseSync"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "_getErrorMessageFromResponse", function() { return _lib_fetch_fetch_error_message__WEBPACK_IMPORTED_MODULE_9__["getErrorMessageFromResponse"]; }); /* harmony import */ var _lib_register_loaders__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./lib/register-loaders */ "./src/lib/register-loaders.js"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "registerLoaders", function() { return _lib_register_loaders__WEBPACK_IMPORTED_MODULE_10__["registerLoaders"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "parse", function() { return _lib_parse__WEBPACK_IMPORTED_MODULE_0__["parse"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "parseSync", function() { return _lib_parse_sync__WEBPACK_IMPORTED_MODULE_1__["parseSync"]; }); /* harmony import */ var _lib_parse_in_batches__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./lib/parse-in-batches */ "./src/lib/parse-in-batches.js"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "parseInBatches", function() { return _lib_parse_in_batches__WEBPACK_IMPORTED_MODULE_11__["parseInBatches"]; }); /* harmony import */ var _lib_parse_in_batches_sync__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./lib/parse-in-batches-sync */ "./src/lib/parse-in-batches-sync.js"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "parseInBatchesSync", function() { return _lib_parse_in_batches_sync__WEBPACK_IMPORTED_MODULE_12__["parseInBatchesSync"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "load", function() { return _lib_load__WEBPACK_IMPORTED_MODULE_3__["load"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "loadInBatches", function() { return _lib_load__WEBPACK_IMPORTED_MODULE_3__["loadInBatches"]; }); /* harmony import */ var _lib_encode__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./lib/encode */ "./src/lib/encode.js"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "encode", function() { return _lib_encode__WEBPACK_IMPORTED_MODULE_13__["encode"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "encodeSync", function() { return _lib_encode__WEBPACK_IMPORTED_MODULE_13__["encodeSync"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "encodeInBatches", function() { return _lib_encode__WEBPACK_IMPORTED_MODULE_13__["encodeInBatches"]; }); /* harmony import */ var _lib_save__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./lib/save */ "./src/lib/save.js"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "save", function() { return _lib_save__WEBPACK_IMPORTED_MODULE_14__["save"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "saveSync", function() { return _lib_save__WEBPACK_IMPORTED_MODULE_14__["saveSync"]; }); /* harmony import */ var _javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./javascript-utils/is-type */ "./src/javascript-utils/is-type.js"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isPromise", function() { return _javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_15__["isPromise"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isIterable", function() { return _javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_15__["isIterable"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isAsyncIterable", function() { return _javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_15__["isAsyncIterable"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isIterator", function() { return _javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_15__["isIterator"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isFetchResponse", function() { return _javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_15__["isFetchResponse"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isReadableStream", function() { return _javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_15__["isReadableStream"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isWritableStream", function() { return _javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_15__["isWritableStream"]; }); /* harmony import */ var _javascript_utils_binary_utils__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./javascript-utils/binary-utils */ "./src/javascript-utils/binary-utils.js"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toArrayBuffer", function() { return _javascript_utils_binary_utils__WEBPACK_IMPORTED_MODULE_16__["toArrayBuffer"]; }); /* harmony import */ var _javascript_utils_stream_utils__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./javascript-utils/stream-utils */ "./src/javascript-utils/stream-utils.js"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getStreamIterator", function() { return _javascript_utils_stream_utils__WEBPACK_IMPORTED_MODULE_17__["getStreamIterator"]; }); /* harmony import */ var _javascript_utils_async_iterator_utils__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./javascript-utils/async-iterator-utils */ "./src/javascript-utils/async-iterator-utils.js"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forEach", function() { return _javascript_utils_async_iterator_utils__WEBPACK_IMPORTED_MODULE_18__["forEach"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatenateAsyncIterator", function() { return _javascript_utils_async_iterator_utils__WEBPACK_IMPORTED_MODULE_18__["concatenateAsyncIterator"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lineAsyncIterator", function() { return _javascript_utils_async_iterator_utils__WEBPACK_IMPORTED_MODULE_18__["lineAsyncIterator"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "textDecoderAsyncIterator", function() { return _javascript_utils_async_iterator_utils__WEBPACK_IMPORTED_MODULE_18__["textDecoderAsyncIterator"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "numberedLineAsyncIterator", function() { return _javascript_utils_async_iterator_utils__WEBPACK_IMPORTED_MODULE_18__["numberedLineAsyncIterator"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isBrowser", function() { return _utils_globals__WEBPACK_IMPORTED_MODULE_5__["isBrowser"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "self", function() { return _utils_globals__WEBPACK_IMPORTED_MODULE_5__["self"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "window", function() { return _utils_globals__WEBPACK_IMPORTED_MODULE_5__["window"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "global", function() { return _utils_globals__WEBPACK_IMPORTED_MODULE_5__["global"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "document", function() { return _utils_globals__WEBPACK_IMPORTED_MODULE_5__["document"]; }); /* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./utils/assert */ "./src/utils/assert.js"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "assert", function() { return _utils_assert__WEBPACK_IMPORTED_MODULE_19__["default"]; }); /* harmony import */ var _lib_select_loader__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./lib/select-loader */ "./src/lib/select-loader.js"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "_selectLoader", function() { return _lib_select_loader__WEBPACK_IMPORTED_MODULE_20__["selectLoader"]; }); /* harmony import */ var _worker_utils_worker_thread__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./worker-utils/worker-thread */ "./src/worker-utils/worker-thread.js"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "_WorkerThread", function() { return _worker_utils_worker_thread__WEBPACK_IMPORTED_MODULE_21__["default"]; }); /* harmony import */ var _worker_utils_worker_farm__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./worker-utils/worker-farm */ "./src/worker-utils/worker-farm.js"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "_WorkerFarm", function() { return _worker_utils_worker_farm__WEBPACK_IMPORTED_MODULE_22__["default"]; }); /* harmony import */ var _worker_utils_worker_pool__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./worker-utils/worker-pool */ "./src/worker-utils/worker-pool.js"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "_WorkerPool", function() { return _worker_utils_worker_pool__WEBPACK_IMPORTED_MODULE_23__["default"]; }); /* harmony import */ var _lib_progress_fetch_progress__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./lib/progress/fetch-progress */ "./src/lib/progress/fetch-progress.js"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "_fetchProgress", function() { return _lib_progress_fetch_progress__WEBPACK_IMPORTED_MODULE_24__["default"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "_unregisterLoaders", function() { return _lib_register_loaders__WEBPACK_IMPORTED_MODULE_10__["_unregisterLoaders"]; }); // PATH // FILE READING AND WRITING // FILE PARSING AND ENCODING // LOADING (READING + PARSING) // ENCODING AND SAVING // "JAVASCRIPT" UTILS // ITERATOR UTILS // CORE UTILS // EXPERIMENTAL // FOR TESTING // DEPRECATED // Use @loaders.gl/polyfills and global symbols instead const TextEncoder = _utils_globals__WEBPACK_IMPORTED_MODULE_5__["global"].TextEncoder; const TextDecoder = _utils_globals__WEBPACK_IMPORTED_MODULE_5__["global"].TextDecoder; // Returns a promise that resolves to a readable stream async function createReadStream(url, options) { // eslint-disable-next-line console.warn('createReadStream() deprecated, use fetch().then(resp => resp.body)'); url = Object(_lib_fetch_file_aliases__WEBPACK_IMPORTED_MODULE_4__["resolvePath"])(url); const response = await Object(_lib_fetch_fetch_file__WEBPACK_IMPORTED_MODULE_2__["fetchFile"])(url, options); return response.body; } function parseFile(...args) { console.warn('parse() deprecated, use parse()'); // eslint-disable-line return Object(_lib_parse__WEBPACK_IMPORTED_MODULE_0__["parse"])(...args); } function parseFileSync(...args) { console.warn('parseSync() deprecated, use parseSync()'); // eslint-disable-line return Object(_lib_parse_sync__WEBPACK_IMPORTED_MODULE_1__["parseSync"])(...args); } function loadFile(...args) { console.warn('loadFile() deprecated, use load()'); // eslint-disable-line return Object(_lib_load__WEBPACK_IMPORTED_MODULE_3__["load"])(...args); } /***/ }), /***/ "./src/javascript-utils/async-iterator-utils.js": /*!******************************************************!*\ !*** ./src/javascript-utils/async-iterator-utils.js ***! \******************************************************/ /*! exports provided: forEach, concatenateAsyncIterator, textDecoderAsyncIterator, textEncoderAsyncIterator, lineAsyncIterator, numberedLineAsyncIterator */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "forEach", function() { return forEach; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatenateAsyncIterator", function() { return concatenateAsyncIterator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "textDecoderAsyncIterator", function() { return textDecoderAsyncIterator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "textEncoderAsyncIterator", function() { return textEncoderAsyncIterator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "lineAsyncIterator", function() { return lineAsyncIterator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "numberedLineAsyncIterator", function() { return numberedLineAsyncIterator; }); /* harmony import */ var _javascript_utils_memory_copy_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../javascript-utils/memory-copy-utils */ "./src/javascript-utils/memory-copy-utils.js"); /* global TextDecoder, TextEncoder */ // GENERAL UTILITIES // Iterate over async iterator, without resetting iterator if end is not reached // - forEach does not reset iterator if exiting loop prematurely // so that iteration can continue in a second loop // - It is recommended to use a standard for await as last loop to ensure // iterator gets properly reset // TODO - optimize using sync iteration if argument is an Iterable? async function forEach(iterator, visitor) { // eslint-disable-next-line while (true) { const {done, value} = await iterator.next(); if (done) { iterator.return(); return; } const cancel = visitor(value); if (cancel) { return; } } } // Concatenates all data chunks yielded by an async iterator async function concatenateAsyncIterator(asyncIterator) { let arrayBuffer = new ArrayBuffer(); let string = ''; for await (const chunk of asyncIterator) { if (typeof chunk === 'string') { string += chunk; } else { arrayBuffer = Object(_javascript_utils_memory_copy_utils__WEBPACK_IMPORTED_MODULE_0__["concatenateArrayBuffers"])(arrayBuffer, chunk); } } return string || arrayBuffer; } // ITERATOR GENERATORS // TextDecoder iterators // TextDecoder will keep any partial undecoded bytes between calls to `decode` async function* textDecoderAsyncIterator(arrayBufferIterator, options) { const textDecoder = new TextDecoder(options); for await (const arrayBuffer of arrayBufferIterator) { yield typeof arrayBuffer === 'string' ? arrayBuffer : textDecoder.decode(arrayBuffer, {stream: true}); } } // TextEncoder iterator // TODO - this is not useful unless min chunk size is given // TextEncoder will keep any partial undecoded bytes between calls to `encode` // If iterator does not yield strings, assume arrayBuffer and return unencoded async function* textEncoderAsyncIterator(textIterator, options) { const textEncoder = new TextEncoder(); for await (const text of textIterator) { yield typeof text === 'string' ? textEncoder.encode(text) : text; } } // Input: async iterable over strings // Returns: an async iterable over lines // See http://2ality.com/2018/04/async-iter-nodejs.html async function* lineAsyncIterator(textIterator) { let previous = ''; for await (const textChunk of textIterator) { previous += textChunk; let eolIndex; while ((eolIndex = previous.indexOf('\n')) >= 0) { // line includes the EOL const line = previous.slice(0, eolIndex + 1); previous = previous.slice(eolIndex + 1); yield line; } } if (previous.length > 0) { yield previous; } } /** * Parameter: async iterable of lines * Result: async iterable of numbered lines */ // See http://2ality.com/2018/04/async-iter-nodejs.html // eslint-disable-next-line no-shadow async function* numberedLineAsyncIterator(lineIterator) { let counter = 1; for await (const line of lineIterator) { yield {counter, line}; counter++; } } /***/ }), /***/ "./src/javascript-utils/binary-utils.js": /*!**********************************************!*\ !*** ./src/javascript-utils/binary-utils.js ***! \**********************************************/ /*! exports provided: toArrayBuffer */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toArrayBuffer", function() { return toArrayBuffer; }); /* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/assert */ "./src/utils/assert.js"); /* harmony import */ var _node_utils_to_array_buffer_node__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../node/utils/to-array-buffer.node */ 0); /* harmony import */ var _node_utils_to_array_buffer_node__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_utils_to_array_buffer_node__WEBPACK_IMPORTED_MODULE_1__); /* global ArrayBuffer, TextEncoder */ function toArrayBuffer(data) { if (_node_utils_to_array_buffer_node__WEBPACK_IMPORTED_MODULE_1__["toArrayBuffer"]) { // TODO - per docs we should just be able to call buffer.buffer, but there are issues data = Object(_node_utils_to_array_buffer_node__WEBPACK_IMPORTED_MODULE_1__["toArrayBuffer"])(data); } if (data instanceof ArrayBuffer) { return data; } // Careful - Node Buffers will look like ArrayBuffers (keep after isBuffer) if (ArrayBuffer.isView(data)) { return data.buffer; } if (typeof data === 'string') { const text = data; const uint8Array = new TextEncoder().encode(text); return uint8Array.buffer; } return Object(_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(false); } // export function blobToArrayBuffer(blob) { // return new Promise((resolve, reject) => { // let arrayBuffer; // const fileReader = new FileReader(); // fileReader.onload = event => { // arrayBuffer = event.target.result; // }; // fileReader.onloadend = event => resolve(arrayBuffer); // fileReader.onerror = reject; // fileReader.readAsArrayBuffer(blob); // }); // } /***/ }), /***/ "./src/javascript-utils/is-type.js": /*!*****************************************!*\ !*** ./src/javascript-utils/is-type.js ***! \*****************************************/ /*! exports provided: isPromise, isIterable, isAsyncIterable, isIterator, isFetchResponse, isFile, isBlob, isFileReadable, isWritableDOMStream, isReadableDOMStream, isWritableNodeStream, isReadableNodeStream, isReadableStream, isWritableStream */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isPromise", function() { return isPromise; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isIterable", function() { return isIterable; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isAsyncIterable", function() { return isAsyncIterable; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isIterator", function() { return isIterator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFetchResponse", function() { return isFetchResponse; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFile", function() { return isFile; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isBlob", function() { return isBlob; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFileReadable", function() { return isFileReadable; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isWritableDOMStream", function() { return isWritableDOMStream; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isReadableDOMStream", function() { return isReadableDOMStream; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isWritableNodeStream", function() { return isWritableNodeStream; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isReadableNodeStream", function() { return isReadableNodeStream; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isReadableStream", function() { return isReadableStream; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isWritableStream", function() { return isWritableStream; }); /* global File, Blob, Response */ const isBoolean = x => typeof x === 'boolean'; const isFunction = x => typeof x === 'function'; const isObject = x => x !== null && typeof x === 'object'; const isPromise = x => isObject(x) && isFunction(x.then); const isIterable = x => x && typeof x[Symbol.iterator] === 'function'; const isAsyncIterable = x => x && typeof x[Symbol.asyncIterator] === 'function'; const isIterator = x => x && isFunction(x.next); const isFetchResponse = x => (typeof Response !== 'undefined' && x instanceof Response) || (x.arrayBuffer && x.text && x.json); const isFile = x => typeof File !== 'undefined' && x instanceof File; const isBlob = x => typeof Blob !== 'undefined' && x instanceof Blob; const isFileReadable = x => isFile(x) || isBlob(x); // Blob & File are FileReader compatible const isWritableDOMStream = x => { return isObject(x) && isFunction(x.abort) && isFunction(x.getWriter); }; const isReadableDOMStream = x => { return ( isObject(x) && isFunction(x.tee) && isFunction(x.cancel) && isFunction(x.pipeTo) && isFunction(x.getReader) ); }; const isWritableNodeStream = x => { return isObject(x) && isFunction(x.end) && isFunction(x.write) && isBoolean(x.writable); }; const isReadableNodeStream = x => { return isObject(x) && isFunction(x.read) && isFunction(x.pipe) && isBoolean(x.readable); }; const isReadableStream = x => isReadableDOMStream(x) || isReadableNodeStream(x); const isWritableStream = x => isWritableDOMStream(x) || isWritableNodeStream(x); /***/ }), /***/ "./src/javascript-utils/memory-copy-utils.js": /*!***************************************************!*\ !*** ./src/javascript-utils/memory-copy-utils.js ***! \***************************************************/ /*! exports provided: concatenateArrayBuffers */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatenateArrayBuffers", function() { return concatenateArrayBuffers; }); function concatenateArrayBuffers(source1, source2) { const sourceArray1 = source1 instanceof ArrayBuffer ? new Uint8Array(source1) : source1; const sourceArray2 = source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2; const temp = new Uint8Array(sourceArray1.byteLength + sourceArray2.byteLength); temp.set(sourceArray1, 0); temp.set(sourceArray2, sourceArray1.byteLength); return temp; } /***/ }), /***/ "./src/javascript-utils/stream-utils.js": /*!**********************************************!*\ !*** ./src/javascript-utils/stream-utils.js ***! \**********************************************/ /*! exports provided: getStreamIterator */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getStreamIterator", function() { return getStreamIterator; }); /* harmony import */ var _utils_globals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/globals */ "./src/utils/globals.js"); function getStreamIterator(stream) { // Hacky test for node version to ensure we don't call bad polyfills if (_utils_globals__WEBPACK_IMPORTED_MODULE_0__["isBrowser"] || _utils_globals__WEBPACK_IMPORTED_MODULE_0__["nodeVersion"] >= 10) { // NODE 10+: stream is an asyncIterator if (typeof stream[Symbol.asyncIterator] === 'function') { return stream; } // WhatWG: stream is supposed to have a `getIterator` method if (typeof stream.getIterator === 'function') { return stream.getIterator(); } } return _utils_globals__WEBPACK_IMPORTED_MODULE_0__["isBrowser"] ? makeBrowserStreamIterator(stream) : makeNodeStreamIterator(stream); } // BROWSER IMPLEMENTATION // See https://jakearchibald.com/2017/async-iterators-and-generators/#making-streams-iterate async function* makeBrowserStreamIterator(stream) { // In the brower, we first need to get a lock on the stream const reader = stream.getReader(); try { // eslint-disable-next-line no-constant-condition while (true) { // Read from the stream const {done, value} = await reader.read(); // Exit if we're done if (done) { return; } // Else yield the chunk yield value; } } catch (error) { // TODO - examples makes it look like this should always be called, // but that generates exceptions so only call it if we do not reach the end reader.releaseLock(); } } // NODE <10 IMPLEMENTATION // See https://github.com/bustle/streaming-iterables, MIT license async function* makeNodeStreamIterator(stream) { // Node createStream will return promises to handle http requests stream = await stream; // eslint-disable-next-line no-constant-condition while (true) { const data = stream.read(); if (data !== null) { yield data; // eslint-disable-next-line no-continue continue; } if (stream._readableState.ended) { return; } await onceReadable(stream); } } async function onceReadable(stream) { return new Promise(resolve => { stream.once('readable', resolve); }); } // TODO - we could add our own polyfill // const {Readable} = require('stream'); // if (typeof Readable !== 'undefined' && !Readable.prototype[Symbol.asyncIterator]) { // Readable.prototype[Symbol.asyncIterator] = function () { // return makeNodeStreamIterator(this); // } // } /***/ }), /***/ "./src/lib/encode.js": /*!***************************!*\ !*** ./src/lib/encode.js ***! \***************************/ /*! exports provided: encode, encodeSync, encodeInBatches */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "encode", function() { return encode; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "encodeSync", function() { return encodeSync; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "encodeInBatches", function() { return encodeInBatches; }); function encode(data, writer, options, url) { if (writer.encode) { return writer.encode(data, options); } if (writer.encodeSync) { return Promise.resolve(writer.encodeSync(data, options)); } // TODO - Use encodeToBatches? throw new Error('Writer could not encode data'); } function encodeSync(data, writer, options, url) { if (writer.encodeSync) { return writer.encodeSync(data, options); } throw new Error('Writer could not synchronously encode data'); } function encodeInBatches(data, writer, options, url) { if (writer.encodeInBatches) { return writer.encodeInBatches(data, options); } // TODO -fall back to atomic encode? throw new Error('Writer could not encode data in batches'); } /***/ }), /***/ "./src/lib/fetch/fetch-error-message.js": /*!**********************************************!*\ !*** ./src/lib/fetch/fetch-error-message.js ***! \**********************************************/ /*! exports provided: getErrorMessageFromResponseSync, getErrorMessageFromResponse */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getErrorMessageFromResponseSync", function() { return getErrorMessageFromResponseSync; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getErrorMessageFromResponse", function() { return getErrorMessageFromResponse; }); function getErrorMessageFromResponseSync(response) { return `Failed to fetch resource ${response.url}(${response.status}): ${response.statusText} `; } async function getErrorMessageFromResponse(response) { let message = `Failed to fetch resource ${response.url} (${response.status}): `; try { const contentType = response.headers.get('Content-Type'); if (contentType.includes('application/json')) { message += await response.text(); } else { message += response.statusText; } } catch (error) { // eslint forbids return in finally statement return message; } return message; } /***/ }), /***/ "./src/lib/fetch/fetch-file.browser.js": /*!*********************************************!*\ !*** ./src/lib/fetch/fetch-file.browser.js ***! \*********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return fetchFileReadable; }); /* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/assert */ "./src/utils/assert.js"); /* global FileReader, Headers */ // File reader fetch "polyfill" for the browser class FileReadableResponse { constructor(fileOrBlob) { this._fileOrBlob = fileOrBlob; this.bodyUsed = false; } get headers() { return new Headers({ 'Content-Length': this._fileOrBlob.size, 'Content-Type': this._fileOrBlob.type }); } get ok() { return true; // Blob & File objects are already in memory } get status() { return 200; // Blob & File objects are already in memory } url() { // Note: This is just the file name without path information // Note: File has `name` field but the Blob baseclass does not return this._fileOrBlob.name || ''; } async arrayBuffer() { const {reader, promise} = this._getFileReader(); reader.readAsArrayBuffer(this._fileOrBlob); return promise; } async text() { const {reader, promise} = this._getFileReader(); reader.readAsText(this._fileOrBlob); return promise; } async json() { const text = await this.text(); return JSON.parse(text); } // TODO - body, how to support stream? // Can this be portable? // eslint-disable-next-line // https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams#Creating_your_own_custom_readable_stream // get body() { // assert(false); // } // PRIVATE _getFileReader() { Object(_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(!this.bodyUsed); this.bodyUsed = true; let reader; const promise = new Promise((resolve, reject) => { try { reader = new FileReader(); reader.onerror = error => reject(new Error(error)); reader.onabort = () => reject(new Error('Read aborted.')); reader.onload = () => resolve(reader.result); } catch (error) { reject(error); } }); return {reader, promise}; } } // @param {File|Blob} file HTML File or Blob object to read as string // @returns {Promise.string} Resolves to a string containing file contents function fetchFileReadable(fileOrBlob, options) { return Promise.resolve(new FileReadableResponse(fileOrBlob, options)); } /***/ }), /***/ "./src/lib/fetch/fetch-file.js": /*!*************************************!*\ !*** ./src/lib/fetch/fetch-file.js ***! \*************************************/ /*! exports provided: fetchFile */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fetchFile", function() { return fetchFile; }); /* harmony import */ var _javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../javascript-utils/is-type */ "./src/javascript-utils/is-type.js"); /* harmony import */ var _file_aliases__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./file-aliases */ "./src/lib/fetch/file-aliases.js"); /* harmony import */ var _fetch_file_browser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fetch-file.browser */ "./src/lib/fetch/fetch-file.browser.js"); /* global fetch */ // As fetch but respects pathPrefix and file aliases // Reads file data from: // * data urls // * http/http urls // * File/Blob objects async function fetchFile(url, options) { if (Object(_javascript_utils_is_type__WEBPACK_IMPORTED_MODULE_0__["isFileReadable"])(url)) { return Object(_fetch_file_browser__WEBPACK_IMPORTED_MODULE_2__["default"])(url, options); } url = Object(_file_aliases__WEBPACK_IMPORTED_MODULE_1__["resolvePath"])(url); // TODO - SUPPORT reading from `File` objects return fetch(url, options); } /***/ }), /***/ "./src/lib/fetch/file-aliases.js": /*!***************************************!*\ !*** ./src/lib/fetch/file-aliases.js ***! \***************************************/ /*! exports provided: setPathPrefix, getPathPrefix, addAliases, resolvePath */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setPathPrefix", function() { return setPathPrefix; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getPathPrefix", function() { return getPathPrefix; }); /* harmony expor