UNPKG

feeles-ide

Version:

The hackable and serializable IDE to make learning material

73 lines (63 loc) 1.86 kB
import _extends from 'babel-runtime/helpers/extends'; import _Promise from 'babel-runtime/core-js/promise'; import _Map from 'babel-runtime/core-js/map'; import BabelWorker from '../workers/babel.worker'; // WebWorker instance var worker = new BabelWorker(); // <string, { file, resolve, reject }> map var pool = new _Map(); // Receive messages from Babel worker.addEventListener('message', function (event) { // Result of transpiling var _event$data = event.data, id = _event$data.id, code = _event$data.code, error = _event$data.error; if (!pool.has(id)) { // Not Found Error console.warn('Error in Babel: Unknown id=' + id, '_File.js:babelFile'); } var _pool$get = pool.get(id), file = _pool$get.file, resolve = _pool$get.resolve, reject = _pool$get.reject; pool.delete(id); if (error) { // Got a Babel Error! var loc = error.loc, message = error.message; var babelError = new Error(message, file.name, loc.line); reject(babelError); } else { resolve(file.set({ text: code })); } }); var babelFile = function () { var count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return function (file, babelrc) { return new _Promise(function (resolve, reject) { if (file.isScript && file.text.length < 100000) { var id = 'unique in babelFile.js:babelFile--' + count++; // Set into the pool pool.set(id, { file: file, resolve: resolve, reject: reject }); // Send messages from Babel worker.postMessage({ id: id, code: file.text, options: _extends({}, babelrc, { filename: file.name }) }); } else { resolve(file); } }); }; }(); export default babelFile;