Merge pull request #3475 from ethcore/ng-fix-parity-jsapi
Make parity.js usable by Node and Browser
This commit is contained in:
commit
d0cbbe2ec3
@ -43,6 +43,7 @@
|
||||
"test": "mocha 'src/**/*.spec.js'",
|
||||
"test:coverage": "istanbul cover _mocha -- 'src/**/*.spec.js'",
|
||||
"test:e2e": "mocha 'src/**/*.e2e.js'",
|
||||
"test:npm": "(cd .npmjs && npm i) && node test/npmLibrary && (rm -rf .npmjs/node_modules)",
|
||||
"prepush": "npm run lint:cached"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
@ -27,6 +27,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"bignumber.js": "^2.3.0",
|
||||
"js-sha3": "^0.5.2"
|
||||
"js-sha3": "^0.5.2",
|
||||
"node-fetch": "^1.6.3"
|
||||
}
|
||||
}
|
||||
|
@ -14,10 +14,22 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import 'babel-polyfill/dist/polyfill.js';
|
||||
import es6Promise from 'es6-promise';
|
||||
es6Promise.polyfill();
|
||||
|
||||
const isNode = typeof global !== 'undefined' && typeof global !== 'undefined';
|
||||
const isBrowser = typeof self !== 'undefined' && typeof self.window !== 'undefined';
|
||||
|
||||
if (isBrowser) {
|
||||
require('whatwg-fetch');
|
||||
}
|
||||
|
||||
if (isNode) {
|
||||
global.fetch = require('node-fetch');
|
||||
}
|
||||
|
||||
import Abi from './abi';
|
||||
import Api from './api';
|
||||
|
||||
export {
|
||||
Abi,
|
||||
Api
|
||||
};
|
||||
module.exports = { Api, Abi };
|
||||
|
45
js/test/npmLibrary.js
Normal file
45
js/test/npmLibrary.js
Normal file
@ -0,0 +1,45 @@
|
||||
// Copyright 2015, 2016 Ethcore (UK) Ltd.
|
||||
// This file is part of Parity.
|
||||
|
||||
// Parity is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
|
||||
// Parity is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
try {
|
||||
var Api = require('../.npmjs/library.js').Api;
|
||||
var Abi = require('../.npmjs/library.js').Abi;
|
||||
|
||||
if (typeof Api !== 'function') {
|
||||
throw new Error('No Api');
|
||||
}
|
||||
|
||||
if (typeof Abi !== 'function') {
|
||||
throw new Error('No Abi');
|
||||
}
|
||||
|
||||
var transport = new Api.Transport.Http('http://localhost:8545');
|
||||
var api = new Api(transport);
|
||||
|
||||
api.eth
|
||||
.blockNumber()
|
||||
.then((block) => {
|
||||
console.log('library working fine', '(block #' + block.toFormat() + ')');
|
||||
process.exit(0);
|
||||
})
|
||||
.catch(() => {
|
||||
console.log('library working fine (disconnected)');
|
||||
process.exit(0);
|
||||
});
|
||||
} catch (e) {
|
||||
console.error('An error occured:', e.toString().split('\n')[0]);
|
||||
process.exit(1);
|
||||
}
|
@ -26,6 +26,7 @@ const DEST = process.env.BUILD_DEST || '.build';
|
||||
|
||||
module.exports = {
|
||||
context: path.join(__dirname, './src'),
|
||||
target: 'node',
|
||||
entry: {
|
||||
// library
|
||||
'inject': ['./web3.js'],
|
||||
@ -34,9 +35,18 @@ module.exports = {
|
||||
},
|
||||
output: {
|
||||
path: path.join(__dirname, DEST),
|
||||
filename: '[name].js'
|
||||
filename: '[name].js',
|
||||
library: '[name].js',
|
||||
libraryTarget: 'umd'
|
||||
},
|
||||
externals: {
|
||||
'node-fetch': 'node-fetch',
|
||||
'vertx': 'vertx'
|
||||
},
|
||||
module: {
|
||||
noParse: [
|
||||
/babel-polyfill/
|
||||
],
|
||||
loaders: [
|
||||
{
|
||||
test: /\.js$/,
|
||||
|
@ -24,13 +24,23 @@ const isProd = ENV === 'production';
|
||||
|
||||
module.exports = {
|
||||
context: path.join(__dirname, './src'),
|
||||
target: 'node',
|
||||
entry: 'library.js',
|
||||
output: {
|
||||
path: path.join(__dirname, '.npmjs'),
|
||||
filename: 'library.js',
|
||||
libraryTarget: 'commonjs'
|
||||
library: 'Parity',
|
||||
libraryTarget: 'umd',
|
||||
umdNamedDefine: true
|
||||
},
|
||||
externals: {
|
||||
'node-fetch': 'node-fetch',
|
||||
'vertx': 'vertx'
|
||||
},
|
||||
module: {
|
||||
noParse: [
|
||||
/babel-polyfill/
|
||||
],
|
||||
loaders: [
|
||||
{
|
||||
test: /(\.jsx|\.js)$/,
|
||||
|
Loading…
Reference in New Issue
Block a user