zotero/gulp/babel-worker.js
Tom Najdek 9aa057edee Introduce a build system
* Add a multi-process, gulp-based build system to support es6 features,
  async/await, jsx and scss
* Add a package.json to support dependency management and allow starting
  the build process via npm
* Replace embedded Bluebird library with npm-installed one
* Add react, react-dom and web-library
* Introduce a custom require() loader in include.js as well as a minimal
  local require() implementation in various other places
2017-05-23 17:02:50 +01:00

48 lines
No EOL
1.2 KiB
JavaScript

/* global onmessage: true, postMessage: false */
'use strict';
const fs = require('fs');
const path = require('path');
const babel = require('babel-core');
const mkdirp = require('mkdirp');
const options = JSON.parse(fs.readFileSync('.babelrc'));
/* exported onmessage */
onmessage = (ev) => {
const t1 = Date.now();
const sourcefile = path.normalize(ev.data);
let isError = false;
let isSkipped = false;
fs.readFile(sourcefile, 'utf8', (err, data) => {
var transformed;
if(sourcefile === 'resource/react-dom.js') {
transformed = data.replace(/ownerDocument\.createElement\((.*?)\)/gi, 'ownerDocument.createElementNS(DOMNamespaces.html, $1)');
} else if('ignore' in options && options.ignore.includes(sourcefile)) {
transformed = data;
isSkipped = true;
} else {
transformed = babel.transform(data, options).code;
}
const outfile = path.join('build', sourcefile);
isError = !!err;
mkdirp(path.dirname(outfile), err => {
isError = !!err;
fs.writeFile(outfile, transformed, err => {
isError = !!err;
const t2 = Date.now();
postMessage({
isError,
isSkipped,
sourcefile,
outfile,
processingTime: t2 - t1
});
});
});
});
};