|
|
- /******/ (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 = "./node_modules/babel-loader/lib/index.js?!./node_modules/scratch-storage/src/FetchWorkerTool.worker.js");
- /******/ })
- /************************************************************************/
- /******/ ({
-
- /***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/scratch-storage/src/FetchWorkerTool.worker.js":
- /*!************************************************************************************************************!*\
- !*** ./node_modules/babel-loader/lib??ref--4!./node_modules/scratch-storage/src/FetchWorkerTool.worker.js ***!
- \************************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports) {
-
- /* eslint-env worker */
- var jobsActive = 0;
- var complete = [];
- var intervalId = null;
- /**
- * Register a step function.
- *
- * Step checks if there are completed jobs and if there are sends them to the
- * parent. Then it checks the jobs count. If there are no further jobs, clear
- * the step.
- */
-
- var registerStep = function registerStep() {
- intervalId = setInterval(function () {
- if (complete.length) {
- // Send our chunk of completed requests and instruct postMessage to
- // transfer the buffers instead of copying them.
- postMessage(complete.slice(), // Instruct postMessage that these buffers in the sent message
- // should use their Transferable trait. After the postMessage
- // call the "buffers" will still be in complete if you looked,
- // but they will all be length 0 as the data they reference has
- // been sent to the window. This lets us send a lot of data
- // without the normal postMessage behaviour of making a copy of
- // all of the data for the window.
- complete.map(function (response) {
- return response.buffer;
- }).filter(Boolean));
- complete.length = 0;
- }
-
- if (jobsActive === 0) {
- clearInterval(intervalId);
- intervalId = null;
- }
- }, 1);
- };
- /**
- * Receive a job from the parent and fetch the requested data.
- * @param {object} options.job A job id, url, and options descriptor to perform.
- */
-
-
- var onMessage = function onMessage(_ref) {
- var job = _ref.data;
-
- if (jobsActive === 0 && !intervalId) {
- registerStep();
- }
-
- jobsActive++;
- fetch(job.url, job.options).then(function (response) {
- return response.arrayBuffer();
- }).then(function (buffer) {
- return complete.push({
- id: job.id,
- buffer: buffer
- });
- }).catch(function (error) {
- return complete.push({
- id: job.id,
- error: error
- });
- }).then(function () {
- return jobsActive--;
- });
- };
-
- if (self.fetch) {
- postMessage({
- support: {
- fetch: true
- }
- });
- self.addEventListener('message', onMessage);
- } else {
- postMessage({
- support: {
- fetch: false
- }
- });
- self.addEventListener('message', function (_ref2) {
- var job = _ref2.data;
- postMessage([{
- id: job.id,
- error: new Error('fetch is unavailable')
- }]);
- });
- }
-
- /***/ })
-
- /******/ });
- //# sourceMappingURL=326c5f98902ccd335b5b.worker.js.map
|