UNPKG

feeles-ide

Version:

The hackable and serializable IDE to make learning material

83 lines (66 loc) 2.21 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _babel = _interopRequireDefault(require("../workers/babel.worker")); var Rollbar = _interopRequireWildcard(require("../utils/rollbar")); // WebWorker instance var worker = new _babel.default(); // <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=".concat(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 && loc.line); reject(babelError); Rollbar.error(babelError); } else { resolve(file.set({ text: code || file.text // Babel option の ignore に入っている場合は code が null で返される })); } }); var babelFile = function () { var count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return function (file) { 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: { filename: file.name } }); } else { resolve(file); } }); }; }(); var _default = babelFile; exports.default = _default;