workers/webpack: fixes for build and workers.
This commit is contained in:
parent
886008a182
commit
6690bd7e9d
3
.babelrc
3
.babelrc
@ -1,7 +1,6 @@
|
||||
{
|
||||
"presets": ["es2015"],
|
||||
"presets": ["es2017", "es2016", "es2015"],
|
||||
"plugins": [
|
||||
["transform-async-to-generator"],
|
||||
["transform-runtime", {
|
||||
"polyfill": true,
|
||||
"regenerator": true
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,4 +2,5 @@ node_modules/
|
||||
docs/
|
||||
docker_data/
|
||||
browser/bcoin*
|
||||
bcoin*
|
||||
npm-debug.log
|
||||
|
||||
@ -5,3 +5,5 @@ docker_data/
|
||||
test/
|
||||
node_modules/
|
||||
browser/bcoin*
|
||||
bcoin*
|
||||
npm-debug.log
|
||||
|
||||
14
Makefile
14
Makefile
@ -2,6 +2,18 @@ all:
|
||||
@npm run webpack
|
||||
@cp -f lib/workers/worker-browser.js browser/bcoin-worker.js
|
||||
|
||||
browser:
|
||||
@npm run webpack-browser
|
||||
@cp -f lib/workers/worker-browser.js browser/bcoin-worker.js
|
||||
|
||||
compat:
|
||||
@npm run webpack-compat
|
||||
@cp -f lib/workers/worker-browser.js browser/bcoin-worker.js
|
||||
|
||||
node:
|
||||
@npm run webpack-node
|
||||
@cp -f lib/workers/worker.js ./bcoin-worker.js
|
||||
|
||||
clean:
|
||||
@npm run clean
|
||||
|
||||
@ -14,4 +26,4 @@ lint:
|
||||
test:
|
||||
@npm test
|
||||
|
||||
.PHONY: all clean docs lint test
|
||||
.PHONY: all browser compat node clean docs lint test
|
||||
|
||||
@ -77,8 +77,8 @@ Master.prototype._init = function _init() {
|
||||
*/
|
||||
|
||||
Master.prototype._initWebWorkers = function _initWebWorkers() {
|
||||
global.onerror = (err) => {
|
||||
this.emit('error', err);
|
||||
global.onerror = (event) => {
|
||||
this.emit('error', new Error('Master error.'));
|
||||
};
|
||||
|
||||
global.onmessage = (event) => {
|
||||
|
||||
@ -176,7 +176,7 @@ WorkerPool.prototype.close = async function close() {
|
||||
*/
|
||||
|
||||
WorkerPool.prototype.spawn = function spawn(id) {
|
||||
let child = new Worker(id, this.masterURL);
|
||||
let child = new Worker(id, this);
|
||||
|
||||
child.on('error', (err) => {
|
||||
this.emit('error', err, child);
|
||||
@ -417,24 +417,25 @@ WorkerPool.prototype.scrypt = async function scrypt(passwd, salt, N, r, p, len)
|
||||
* @alias module:workers.Worker
|
||||
* @constructor
|
||||
* @param {Number} id
|
||||
* @param {String} masterURL
|
||||
* @param {Object} options
|
||||
*/
|
||||
|
||||
function Worker(id, masterURL) {
|
||||
function Worker(id, options) {
|
||||
if (!(this instanceof Worker))
|
||||
return new Worker(id, masterURL);
|
||||
return new Worker(id, options);
|
||||
|
||||
EventEmitter.call(this);
|
||||
|
||||
this.id = id;
|
||||
this.options = options;
|
||||
|
||||
this.framer = new Framer();
|
||||
this.parser = new Parser();
|
||||
|
||||
this.id = id;
|
||||
this.child = null;
|
||||
this.pending = new Map();
|
||||
this.child = null;
|
||||
|
||||
this.env = {
|
||||
BCOIN_MASTER_URL: masterURL,
|
||||
BCOIN_MASTER_URL: this.options.masterURL,
|
||||
BCOIN_WORKER_NETWORK: Network.type,
|
||||
BCOIN_WORKER_ISTTY: process.stdout
|
||||
? (process.stdout.isTTY ? '1' : '0')
|
||||
@ -483,10 +484,10 @@ Worker.prototype._init = function _init() {
|
||||
*/
|
||||
|
||||
Worker.prototype._initWebWorkers = function _initWebWorkers() {
|
||||
this.child = new global.Worker(this.workerURL);
|
||||
this.child = new global.Worker(this.options.workerURL);
|
||||
|
||||
this.child.onerror = (err) => {
|
||||
this.emit('error', err);
|
||||
this.child.onerror = (event) => {
|
||||
this.emit('error', new Error('Worker error.'));
|
||||
this.emit('exit', -1, null);
|
||||
};
|
||||
|
||||
@ -514,7 +515,7 @@ Worker.prototype._initWebWorkers = function _initWebWorkers() {
|
||||
|
||||
Worker.prototype._initChildProcess = function _initChildProcess() {
|
||||
let bin = process.argv[0];
|
||||
let file = path.resolve(__dirname, this.workerFile);
|
||||
let file = path.resolve(__dirname, this.options.workerFile);
|
||||
let env = Object.assign({}, process.env, this.env);
|
||||
let options = { stdio: 'pipe', env: env };
|
||||
|
||||
|
||||
13
package.json
13
package.json
@ -10,7 +10,7 @@
|
||||
},
|
||||
"author": "Fedor Indutny <fedor@indutny.com>",
|
||||
"contributors": [
|
||||
"Christopher Jeffrey <chjjeffrey@gmail.com> (https://github.com/chjj)"
|
||||
"Christopher Jeffrey <chjjeffrey@gmail.com>"
|
||||
],
|
||||
"keywords": [
|
||||
"bcoin",
|
||||
@ -37,17 +37,17 @@
|
||||
"devDependencies": {
|
||||
"babel-core": "^6.25.0",
|
||||
"babel-loader": "^7.1.0",
|
||||
"babel-plugin-transform-async-to-generator": "^6.24.1",
|
||||
"babel-plugin-transform-runtime": "^6.23.0",
|
||||
"babel-plugin-transform-regenerator": "^6.24.1",
|
||||
"babel-polyfill": "^6.23.0",
|
||||
"babel-preset-es2015": "^6.24.1",
|
||||
"babel-preset-es2016": "^6.24.1",
|
||||
"babel-preset-es2017": "^6.24.1",
|
||||
"eslint": "^4.1.0",
|
||||
"hash.js": "^1.0.3",
|
||||
"jsdoc": "^3.4.3",
|
||||
"level-js": "^2.2.4",
|
||||
"mocha": "^3.4.1",
|
||||
"node-loader": "^0.6.0",
|
||||
"uglify-es-webpack-plugin": "^0.0.2",
|
||||
"webpack": "^3.0.0"
|
||||
},
|
||||
"main": "./lib/bcoin.js",
|
||||
@ -58,14 +58,17 @@
|
||||
"bcoin": "./bin/bcoin"
|
||||
},
|
||||
"scripts": {
|
||||
"clean": "rm browser/bcoin.js browser/bcoin-master.js browser/bcoin-worker.js",
|
||||
"clean": "rm -f {browser/,}{bcoin.js,bcoin-master.js,bcoin-worker.js}",
|
||||
"docs": "jsdoc -c jsdoc.json",
|
||||
"lint": "eslint lib/ test/ migrate/ examples/ bench/ scripts/*.js bin/cli bin/node bin/spvnode || exit 0",
|
||||
"lint-file": "eslint",
|
||||
"test": "mocha --reporter spec test/*-test.js",
|
||||
"test-browser": "BCOIN_NO_NATIVE=1 BCOIN_NO_SECP256K1=1 mocha --reporter spec test/*-test.js",
|
||||
"test-file": "mocha --reporter spec",
|
||||
"test-file-browser": "BCOIN_NO_NATIVE=1 BCOIN_NO_SECP256K1=1 mocha --reporter spec",
|
||||
"webpack": "webpack --config webpack.browser.js",
|
||||
"webpack-browser": "webpack --config webpack.browser.js",
|
||||
"webpack-compat": "webpack --config webpack.compat.js",
|
||||
"webpack-node": "webpack --config webpack.node.js"
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
|
||||
const webpack = require('webpack')
|
||||
const path = require('path');
|
||||
const UglifyEsPlugin = require('uglify-es-webpack-plugin');
|
||||
const str = JSON.stringify;
|
||||
const env = process.env;
|
||||
|
||||
@ -19,13 +20,6 @@ module.exports = {
|
||||
modules: ['node_modules'],
|
||||
extensions: ['-browser.js', '.js', '.json']
|
||||
},
|
||||
module: {
|
||||
rules: [{
|
||||
test: /\.js$/,
|
||||
exclude: /node_modules\/(?!bcoin|elliptic|bn\.js|n64)/,
|
||||
loader: 'babel-loader'
|
||||
}]
|
||||
},
|
||||
plugins: [
|
||||
new webpack.DefinePlugin({
|
||||
'process.env.BCOIN_NETWORK':
|
||||
@ -35,10 +29,6 @@ module.exports = {
|
||||
'process.env.BCOIN_MASTER_URL':
|
||||
str(env.BCOIN_MASTER_URL || '/bcoin-master.js')
|
||||
}),
|
||||
new webpack.optimize.UglifyJsPlugin({
|
||||
compress: {
|
||||
warnings: false
|
||||
}
|
||||
})
|
||||
new UglifyEsPlugin()
|
||||
]
|
||||
};
|
||||
|
||||
44
webpack.compat.js
Normal file
44
webpack.compat.js
Normal file
@ -0,0 +1,44 @@
|
||||
'use strict';
|
||||
|
||||
const webpack = require('webpack')
|
||||
const path = require('path');
|
||||
const str = JSON.stringify;
|
||||
const env = process.env;
|
||||
|
||||
module.exports = {
|
||||
target: 'web',
|
||||
entry: {
|
||||
'bcoin': './lib/bcoin-browser',
|
||||
'bcoin-master': './lib/workers/master'
|
||||
},
|
||||
output: {
|
||||
path: path.join(__dirname, 'browser'),
|
||||
filename: '[name].js'
|
||||
},
|
||||
resolve: {
|
||||
modules: ['node_modules'],
|
||||
extensions: ['-browser.js', '.js', '.json']
|
||||
},
|
||||
module: {
|
||||
rules: [{
|
||||
test: /\.js$/,
|
||||
exclude: /node_modules\/(?!bcoin|elliptic|bn\.js|n64)/,
|
||||
loader: 'babel-loader'
|
||||
}]
|
||||
},
|
||||
plugins: [
|
||||
new webpack.DefinePlugin({
|
||||
'process.env.BCOIN_NETWORK':
|
||||
str(env.BCOIN_NETWORK || 'main'),
|
||||
'process.env.BCOIN_WORKER_URL':
|
||||
str(env.BCOIN_WORKER_URL || '/bcoin-worker.js'),
|
||||
'process.env.BCOIN_MASTER_URL':
|
||||
str(env.BCOIN_MASTER_URL || '/bcoin-master.js')
|
||||
}),
|
||||
new webpack.optimize.UglifyJsPlugin({
|
||||
compress: {
|
||||
warnings: false
|
||||
}
|
||||
})
|
||||
]
|
||||
};
|
||||
Loading…
Reference in New Issue
Block a user