UNPKG

6.45 kBJavaScriptView Raw
1/******/ (function(modules) { // webpackBootstrap
2/******/ // The module cache
3/******/ var installedModules = {};
4/******/
5/******/ // The require function
6/******/ function __webpack_require__(moduleId) {
7/******/
8/******/ // Check if module is in cache
9/******/ if(installedModules[moduleId]) {
10/******/ return installedModules[moduleId].exports;
11/******/ }
12/******/ // Create a new module (and put it into the cache)
13/******/ var module = installedModules[moduleId] = {
14/******/ i: moduleId,
15/******/ l: false,
16/******/ exports: {}
17/******/ };
18/******/
19/******/ // Execute the module function
20/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21/******/
22/******/ // Flag the module as loaded
23/******/ module.l = true;
24/******/
25/******/ // Return the exports of the module
26/******/ return module.exports;
27/******/ }
28/******/
29/******/
30/******/ // expose the modules object (__webpack_modules__)
31/******/ __webpack_require__.m = modules;
32/******/
33/******/ // expose the module cache
34/******/ __webpack_require__.c = installedModules;
35/******/
36/******/ // define getter function for harmony exports
37/******/ __webpack_require__.d = function(exports, name, getter) {
38/******/ if(!__webpack_require__.o(exports, name)) {
39/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
40/******/ }
41/******/ };
42/******/
43/******/ // define __esModule on exports
44/******/ __webpack_require__.r = function(exports) {
45/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
46/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
47/******/ }
48/******/ Object.defineProperty(exports, '__esModule', { value: true });
49/******/ };
50/******/
51/******/ // create a fake namespace object
52/******/ // mode & 1: value is a module id, require it
53/******/ // mode & 2: merge all properties of value into the ns
54/******/ // mode & 4: return value when already ns object
55/******/ // mode & 8|1: behave like require
56/******/ __webpack_require__.t = function(value, mode) {
57/******/ if(mode & 1) value = __webpack_require__(value);
58/******/ if(mode & 8) return value;
59/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
60/******/ var ns = Object.create(null);
61/******/ __webpack_require__.r(ns);
62/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
63/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
64/******/ return ns;
65/******/ };
66/******/
67/******/ // getDefaultExport function for compatibility with non-harmony modules
68/******/ __webpack_require__.n = function(module) {
69/******/ var getter = module && module.__esModule ?
70/******/ function getDefault() { return module['default']; } :
71/******/ function getModuleExports() { return module; };
72/******/ __webpack_require__.d(getter, 'a', getter);
73/******/ return getter;
74/******/ };
75/******/
76/******/ // Object.prototype.hasOwnProperty.call
77/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
78/******/
79/******/ // __webpack_public_path__
80/******/ __webpack_require__.p = "";
81/******/
82/******/
83/******/ // Load entry module and return exports
84/******/ return __webpack_require__(__webpack_require__.s = "./node_modules/babel-loader/lib/index.js?!./src/FetchWorkerTool.worker.js");
85/******/ })
86/************************************************************************/
87/******/ ({
88
89/***/ "./node_modules/babel-loader/lib/index.js?!./src/FetchWorkerTool.worker.js":
90/*!*******************************************************************************!*\
91 !*** ./node_modules/babel-loader/lib??ref--4!./src/FetchWorkerTool.worker.js ***!
92 \*******************************************************************************/
93/*! no static exports found */
94/***/ (function(module, exports) {
95
96/* eslint-env worker */
97var jobsActive = 0;
98var complete = [];
99var intervalId = null;
100/**
101 * Register a step function.
102 *
103 * Step checks if there are completed jobs and if there are sends them to the
104 * parent. Then it checks the jobs count. If there are no further jobs, clear
105 * the step.
106 */
107
108var registerStep = function registerStep() {
109 intervalId = setInterval(function () {
110 if (complete.length) {
111 // Send our chunk of completed requests and instruct postMessage to
112 // transfer the buffers instead of copying them.
113 postMessage(complete.slice(), // Instruct postMessage that these buffers in the sent message
114 // should use their Transferable trait. After the postMessage
115 // call the "buffers" will still be in complete if you looked,
116 // but they will all be length 0 as the data they reference has
117 // been sent to the window. This lets us send a lot of data
118 // without the normal postMessage behaviour of making a copy of
119 // all of the data for the window.
120 complete.map(function (response) {
121 return response.buffer;
122 }).filter(Boolean));
123 complete.length = 0;
124 }
125
126 if (jobsActive === 0) {
127 clearInterval(intervalId);
128 intervalId = null;
129 }
130 }, 1);
131};
132/**
133 * Receive a job from the parent and fetch the requested data.
134 * @param {object} options.job A job id, url, and options descriptor to perform.
135 */
136
137
138var onMessage = function onMessage(_ref) {
139 var job = _ref.data;
140
141 if (jobsActive === 0 && !intervalId) {
142 registerStep();
143 }
144
145 jobsActive++;
146 fetch(job.url, job.options).then(function (response) {
147 return response.arrayBuffer();
148 }).then(function (buffer) {
149 return complete.push({
150 id: job.id,
151 buffer: buffer
152 });
153 }).catch(function (error) {
154 return complete.push({
155 id: job.id,
156 error: error
157 });
158 }).then(function () {
159 return jobsActive--;
160 });
161};
162
163if (self.fetch) {
164 postMessage({
165 support: {
166 fetch: true
167 }
168 });
169 self.addEventListener('message', onMessage);
170} else {
171 postMessage({
172 support: {
173 fetch: false
174 }
175 });
176 self.addEventListener('message', function (_ref2) {
177 var job = _ref2.data;
178 postMessage([{
179 id: job.id,
180 error: new Error('fetch is unavailable')
181 }]);
182 });
183}
184
185/***/ })
186
187/******/ });
188//# sourceMappingURL=3325b91e8645157f8dc6.worker.js.map
\No newline at end of file